#include<stdio.h>
#include<string.h>
#include<stdio.h>
#define M 10000
int p = 1;
//用10000个数组存储数据,其中每个数为0~9999,p表示已经用了数组中的几个数。
void jiechen( int a[] , int n){
int i , j , k;
for( j = 2 ; j<= n ; j++){
k = 0; // k 表示进位,用2~n的这些数去乘以比它小的数的阶乘
for( i = 0; i< p ; i++)
a[i] *= j;
for( i = 0 ; i < p ; i++){
a[i] += k ;
k = a[i]/M; //如果数组中的数大于10000,则进位
a[i] = a[i]%M;
}
if(k){
p++;
a[p -1] += k;
}
}
printf("%d",a[p-1]);
for(i=p-2;i>=0;i--)
printf("d",a[i]);
printf("\n");
}
int main(){
int a[M]={0};
int n , i ;
printf("please input a number :\n");
while(scanf("%d",&n),n){
for( i =0 ; i <M ; i++){ //每次要清空数组
a[i] = 0;
a[0] = 1 ; //a[0]一定要初始化为1
p = 1;
}
jiechen(a , n);
}
return 0;
}
C语言求10000的阶乘
最新推荐文章于 2021-05-25 20:41:51 发布