#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) 回复
回复评论