作者在 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;
}
// 原代码我只调整了下格式,想计算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;
}