[C] 求阶乘的,能求大概几万的阶乘吧 →→→→→进入此内容的聊天室

来自 , 2020-10-02, 写在 C, 查看 161 次.
URL http://www.code666.cn/view/d69116f8
  1. #include<stdio.h>
  2. #include<time.h>
  3. #define N 200000
  4. int a[N],jinwei=0,temp,j,i,b,x;
  5. time_t start,end;
  6. int main(void)
  7. {
  8.     start=time(NULL);
  9.  
  10.     a[0]=1;
  11.     for(i=1;i<N;i++)
  12.     {
  13.         a[i]=0;
  14.     }
  15.     printf("输入待求阶乘数:\n");
  16.     scanf("%d",&x);
  17.     for(i=2;i<=x;i++)
  18.     {
  19.         for(j=0;j<N;j++)
  20.         {
  21.             temp=a[j]*i+jinwei;
  22.             a[j]=temp%10;
  23.             jinwei=temp/10;
  24.         }
  25.     }
  26.     for(b=N-1;a[b]==0;b--);
  27.     printf("有%d位数字!\n",b+1);
  28.     for(;b>=0;b--)
  29.     {
  30.         printf("%d",a[b]);
  31.     }
  32.     end=time(NULL);
  33.     printf("用了%d秒的时间!",end-start);
  34.     return 0;
  35. }
  36. //这个算法很多冗余,大家可以帮忙修改下,以便算的更快。
  37. //这个程序代码是将一个很大的数挨个显示出来,虽然能显示很大的数字,但是很慢。可以求最后答案的位数,以及计算机用掉的时间,直接修改宏定义N的值能够修改可求数字的最大位数,本代码设为200000,能求答案的容量为200000,同学们也可测试下自己机器的处理器怎么样,我的很差,此法求10000的阶乘用了整整100秒,大家都来试试吧
  38.  

回复 "求阶乘的,能求大概几万的阶乘吧"

这儿你可以回复上面这条便签

captcha