微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数阶乘

#include"string.h"
#include"stdio.h"
#include"stdlib.h"
int main()
{int i,j,k,n=0,m=0;
int a[3000];/*定义一个数组来存放各位,十位,百位......*/
for(i=0;i<3000;i++)
a[i]=0;
a[0]=1;/* 因为0!=1且1!=1*/
scanf("%d",&k);
for(j=2;j<=k;j++)
{n=0;/* n是在下个循环中存放进阶后的数字的,取余数,5+8=13中的1就是进阶后的数*/
for(i=0;i<3000;i++)
{ m=a[i]*j+n;/*m用来存每一位与当前j的乘积的大小加上进阶的数,因为a[i]是变化的,所以*/
     a[i]=m%10;/*a[i]用来存放当前的最低位*/
  n=m/10;   }}
     
for(i=3000;i>=0;i--)
if(a[i]>0) {m=i;  break;
}   /*存放所求数字的位数*/
for(i=m;i>=0;i--)
printf("%d",a[i]);
printf("\n结果一共%d位\n",m+1);
system("pause");
}


 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐