盆景厂家
免费服务热线

Free service

hotline

010-00000000
盆景厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

高精度阶乘小程序

发布时间:2020-07-01 00:55:49 阅读: 来源:盆景厂家

#include "Stdio.h" #include "Conio.h" int main(void) { int nums[10000]; /*nums数组越大,且改变为长整型,可计算更大的阶乘,但改变数组类型会变慢*/ int k,j; int n,i; printf("Please input a integer n:"); scanf("%d",n); for(i=1;i=n-1;i++) nums[i]=0; /*这里有改进的余地*/ nums[0]=1; k=0; for(i=2;i=n;i++) { for(j=0;j=k;j++) nums[j]=nums[j]*i; for(j=0;j=k-1;j++) { nums[j+1]=nums[j+1]+(int)(nums[j]/10); /*进位计算*/ nums[j]=nums[j]%10; } while(nums[k]>=10) { nums[k+1]=nums[k+1]+(int)(nums[k]/10); /*把结果数字的最高位分别放进nums数组中对应的位中,也可改进*/ nums[k]=nums[k]%10; k++; } } printf("n!="); for(i=k;i>=0;i--) printf("%d",nums[i]); /*输出结果*/ printf("k=%d",k+1); /*k+1是最后结果的位数*/ getch(); return 0; }

这个小程序根据整数乘法的原理,可突破计算机本身及编程语言存储类型大小限制,计算高精度的阶乘,如果nums数组大小为10000,大概可以计算3000的阶乘,即3000!,3000!计算的最后结果数字是9155位,其实这个程序还有很多可以改进的地方,初用C语言,没有把C语言的一些优势发挥出来。还有,我在VB里写好后运行测试发现和C语言比,在这算法一样的情况下,效率是天差地别的! 本程序在TC2.0下编译通过!

聊城定做工作服

枣庄订做工作服

长春西装定做

天津订做西装