求大神给个C语言大数阶乘的程序,要有注释的!

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/20 22:32:16
求大神给个C语言大数阶乘的程序,要有注释的!
xS[oA+[L SwQ m\B ,4AB@5Rj 1riݧ^֚wwN =I_fC=QIhUx\U>.zMy:hkK1X)Ho'%VN! Lf$"6lVy& ~WG&%=AQr4Q#`v.K5#ÿ KQ~{8[9=Y0ب~,f1mi ~x%M1>ʏP@)ǹ4 C!ݳcuUfH>k'6γIxA߈ԟ5g۞> Wq= VX.1WƟqEd$α|̋gBwӱ@WER.R](\^,+>WL/<|tșuYl0pDSX[[()udXDzq

求大神给个C语言大数阶乘的程序,要有注释的!
求大神给个C语言大数阶乘的程序,要有注释的!

求大神给个C语言大数阶乘的程序,要有注释的!
对于求大整数的阶乘,可以采用分段相乘的方法,其理论基础是加法的分配律,乘法的分配律.
for exmaple :123456789*123=123*(123*10^5+56789)=123*123*10^5+123*56789;
如果我们用一个数组result[0]=56789,result[1]=123,那么123456789*123就是123*result[0]%10^6和result[1]*123+result[0]/10^6构成的一个数,另result[0]=123*result[0]%10^6,result[1]=result[1]*123+result[0]/10^6,则这个数就是result[1]result[0];
#include
int main()
{
int n,j,i,t,p;
int result[16000];
while(scanf("%d",&n)!=EOF){
t=p=0;result[0]=1; //t记录result中所存数的个数
for(j=1;j=0;i--)
printf("%05d",result[i]);//s[i]不足5位,说明需补0 也说明result[i]在对100000取余的时候去掉了前导0,所以这里要加上
printf("\n");
}
return 0;
}