大数的阶乘算法

作者在 2010-08-09 01:21:08 发布以下内容
// 目前我看到最短,速度最快的大整数阶乘纯C代码实现,如果有兴趣可以自己算算100000!
// 原代码我只调整了下格式,想计算100000以上阶乘的请自己修改N的数值。

#include <stdio.h>
#define N 100000

int n;

int main()
{
    l:
    while(scanf("%d",&n) != -1)
    {
        int s[N]={1},t=2,a=0,b=0,m=0;
    
        if(n<2)
        {
            puts("1");
            goto l;
        }
    
        for(;a<=m || ++t<=n&&(a=b=0,1);m==a++&&b&&m++) s[a]=(b+=s[a]*t)%N,b/=N;
    
        for(printf("%d",s[m]);m--;printf("%04d",s[m]));
    
        puts("");
    }

    return 0;
}
算法 | 阅读 1319 次
文章评论,共0条
游客请输入验证码
浏览1942813次