下面链接是java的实现,思路叫清晰点
https://blog.51cto.com/6631065/2044441
#include <stdio.h> void 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<MAX; l++) { temp = a[l] *b[j]; tmpA[l+j]+= temp; } } for(k=0; k<MAX-1; k++) { if(tmpA[k]>=10) { temp = tmpA[k]; tmpA[k] = tmpA[k] %10; tmpA[k+1] = tmpA[k+1]+temp/10; } } for(k=0; k<MAX; k++) { a[k] = tmpA[k]; tmpA[k] =0; } } } printf("\n"); f3=0; for(k=MAX-1; k>=0; k--) { if(a[k] >0) f3=1; if(f3>0)printf("%d",a[k]); } }
下面链接是java的实现,思路叫清晰点
https://blog.51cto.com/6631065/2044441
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。