大数阶乘
发布时间:2020-12-14 03:34:06 所属栏目:大数据 来源:网络整理
导读:大数阶乘 返回:n!的位数 结果:a[10000]记录n!的数据 #includestdio.h#includemath.hint factorial(int n);int main(){int re;re=factorial(1000); //测试用的printf("n%dn",re);return 0;}int factorial(int n){long a[10000];//int类型也可以int i,j,l,
大数阶乘
返回:n!的位数 结果:a[10000]记录n!的数据 #include<stdio.h> #include<math.h> int factorial(int n); int main() { int re; re=factorial(1000); //测试用的 printf("n%dn",re); return 0; } int factorial(int n) { long a[10000];//int类型也可以 int i,j,l,c,w,m=0; a[0]=1; for(i=1;i<=n;i++)//i小于等于n,注意边界问题 { c=0; for(j=0;j<=m;j++) { a[j]=a[j]*i+c; c=a[j]/10000;//取4位以上的数据 a[j]%=10000; } if(c>0) { m++; a[m]=c; } } w=m*4+log10(a[m])+1;//math里面的函数 printf("n%ld",a[m]); for(i=m-1;i>=0;i--) printf("%4.4ld",a[i]);//如果a[i]不够4位 在前面自动补零 return w; }by ?吴尚奇 ? Devil_box ? 2014/06 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |