void Print_Factorial ( const int N )
{if(N<0){printf("Invalid input");return;} int n=N;int a[10000]={};a[0]=1; //0和1的阶乘都是1,同时又是用该个位去×,所以初始化为1;int i,j;int len=0;//当前数组所占的最大下标int temp=0; //进位for( i=2;i<=n;i++){for(j=0;j<=len;j++){temp=a[j]*i+temp;a[j]=temp%10;temp/=10;}while(temp) //如果有进位{a[j++]=temp%10;temp/=10;len++;}}for(;len>=0;len--){printf("%d",a[len]);}}
参考:6-10 阶乘计算升级版(C语言-PTA)-CSDN博客