[c]代码库
#include<stdio.h>
#include<time.h>
#define N 200000
int a[N],jinwei=0,temp,j,i,b,x;
time_t start,end;
int main(void)
{
start=time(NULL);
a[0]=1;
for(i=1;i<N;i++)
{
a[i]=0;
}
printf("输入待求阶乘数:\n");
scanf("%d",&x);
for(i=2;i<=x;i++)
{
for(j=0;j<N;j++)
{
temp=a[j]*i+jinwei;
a[j]=temp%10;
jinwei=temp/10;
}
}
for(b=N-1;a[b]==0;b--);
printf("有%d位数字!\n",b+1);
for(;b>=0;b--)
{
printf("%d",a[b]);
}
end=time(NULL);
printf("用了%d秒的时间!",end-start);
return 0;
}
//这个算法很多冗余,大家可以帮忙修改下,以便算的更快。
//这个程序代码是将一个很大的数挨个显示出来,虽然能显示很大的数字,但是很慢。可以求最后答案的位数,以及计算机用掉的时间,直接修改宏定义N的值能够修改可求数字的最大位数,本代码设为200000,能求答案的容量为200000,同学们也可测试下自己机器的处理器怎么样,我的很差,此法求10000的阶乘用了整整100秒,大家都来试试吧
[代码运行效果截图]
高级设计师
by: 小蜜锋 发表于:2012-12-13 23:10:43 顶(2) | 踩(0) 回复
回复评论