C语言实现高阶阶乘(1000的阶乘C语言实现)
由于C语言的变量的大小的限制,使用已有变量无法保存阶乘结果,所以使用数组保存结果,从而使得无法保存的结果得以保存。
#includeTRANSLATE withvoid Print_Factorial ( const int N ); int main() { int N; scanf("%d", &N); Print_Factorial(N); return 0; } //具体实现函数 void Print_Factorial ( const int N ) { int a[3000];//存放阶乘结果的数组 if(N<0) printf("Invalid input\n"); else if(N==0) printf("1"); else { int i,j,tmp; int W=0,k=0;//W进位,k数的位数 tmp=N; for(i=0;tmp!=0;i++)//将计算的数N,存放于数组 { a[i]=tmp%10; tmp=tmp/10; k++; } for(j=N-1;j>0;j--)//计算阶乘 { for(i=0;i )//N-1乘以N的每一位 { tmp=a[i]*j+W; a[i]=tmp%10; W=tmp/10; } while(W)//判断最高位进位 { a[i]=W%10; i++; W=W/10; k++; } } for(j=k-1;j>=0;j--)//显示阶乘 printf("%d",a[j]); } }
Arabic | Hebrew | Polish |
Bulgarian | Hindi | Portuguese |
Catalan | Hmong Daw | Romanian |
Chinese Simplified | Hungarian | Russian |
Chinese Traditional | Indonesian | Slovak |
Czech | Italian | Slovenian |
Danish | Japanese | Spanish |
Dutch | Klingon | Swedish |
English | Korean | Thai |
Estonian | Latvian | Turkish |
Finnish | Lithuanian | Ukrainian |
French | Malay | Urdu |
German | Maltese | Vietnamese |
Greek | Norwegian | Welsh |
Haitian Creole | Persian |