1、n(n>20)的阶乘 【问题描述】 大数运算——计算n的阶乘(n>=20)。 【基本要求】

2025-01-01 08:41:00
推荐回答(1个)
回答1:

没有说用什么语言,写个C语言的——

#include "stdio.h"
#include 
#include "math.h"
int main(int argc,char *argv[]){
int n,i,j,*pn,ln;
double dec=0;
printf("Please enter n(int n>=0)...\nn=");
if(scanf("%d",&n)!=1 || n<0){
printf("Input error, exit...\n");
return 0;
}
for(ln=2;ln<=n;dec+=log10(ln++));
ln=((int)dec+1)/4+1;
if((pn=(int *)malloc(sizeof(int)*ln))==NULL){
printf("Application memory failure...\n");
return 0;
}
for(i=0;i for(ln--,pn[ln]=1,j=2;j<=n;j++){
for(i=ln;i>=0;pn[i--]*=j);
for(i=ln;i>0;i--)
if(pn[i]>9999){
pn[i-1]+=pn[i]/10000;
pn[i]%=10000;
}
}
for(i=0;pn[i]==0;i++);
for(printf("%d! = %d",n,pn[i++]);i<=ln;printf("%04d",pn[i++]));
free(pn);
printf("\n");
return 0;
}

运行样例: