大整数N的阶乘求解!为什么结果又错误
程序代码:
/* 大整数的阶乘计算 */ #include "stdio.h" void caculate(int n); int num[2000]={0}; //计算结果不超过5000位,用数组存储每一位数字 void main() { int n; printf("Please input n:\n"); scanf("%d",&n); caculate(n); } void caculate(int n) { int total=0,remainder=0,i,j,flag; j=n-1; //从数组最后一位开始存储 num[j]=1; for(i=2;i<=n;i++) { while(j>0) { total=i*num[j]+remainder; remainder=0; if(total>=10) { num[j]=total%10; remainder=total/10; } else num[j]=total; j--; } j=n-1; remainder=0; total=0; } for(i=0;i<n;i++) { if(num[i]!=0||flag==1) { printf("%d",num[i]); flag=1; } } printf("\n"); }
后来发现我的程序有问题,计算25以后阶乘都有错误,不知道为何?而且错误都是漏掉了正确输出结果开头的一些数字,请大家指导!