求较大整数n的阶乘,因为n较大时,n的阶乘超出了正常类型的表示范围,可以采用数组进行操作(c实现)
下面链接是java的实现,思路叫清晰点
创新互联公司服务项目包括南芬网站建设、南芬网站制作、南芬网页制作以及南芬网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,南芬网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到南芬省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
https://blog.51cto.com/6631065/2044441
#includevoid Print_Factorial ( const int N ); int main() { int N; scanf("%d", &N); Print_Factorial(N); return 0; } void Print_Factorial(const int N) { #define MAX 5000 int a[MAX]= {0},tmpA[MAX]= {0},b[4]= {0}; int k,i,flag,j,temp,bit,l; int f1=0,f2=0,f3=0; /* 如果小于0大于1000直接返回输入错误*/ if(N <0 || N >1000) { printf("Invalid input\n"); return; } /*等于0输出1*/ else if(N == 0) { printf("%d\n",1); return ; } /*大于0小于1000*/ else { /*将数组a的第一位赋值为1,其余赋值为零*/ a[0] =1; for(i=1; i<=N; i++) { b[0]=b[1]=b[2]=b[3]=0; flag =i; /*将N的各位数进行分解,放入数组b中*/ k=0; while(flag > 0 && k<4) { b[k] = flag %10; flag = flag /10; k++; } temp =0; bit =0; for(j=0; j<4; j++) { /*使用tmpA存储的数值与b数组相乘,结果存到a数组中*/ for(l=0; l =10) { temp = tmpA[k]; tmpA[k] = tmpA[k] %10; tmpA[k+1] = tmpA[k+1]+temp/10; } } for(k=0; k =0; k--) { if(a[k] >0) f3=1; if(f3>0)printf("%d",a[k]); } }
下面链接是java的实现,思路叫清晰点
https://blog.51cto.com/6631065/2044441
本文题目:求较大整数n的阶乘,因为n较大时,n的阶乘超出了正常类型的表示范围,可以采用数组进行操作(c实现)
文章源于:http://scyanting.com/article/iecjep.html