C语言 求一个大数的阶乘

来源:岁月联盟 编辑:exp 时间:2012-10-08
C语言 求一个大数的阶乘
[cpp] 
void BigFactorial(int m) 

    static int a[50000]={0,1};//第一位不用 
    int i,j,carry,tmp,lenth=1;//carry表示进位 
     
    for (i=2;i<=m;i++) 
    { 
        carry=0; 
        for (j=1;j<=lenth;j++) 
        { 
            //乘法转化为加法和进位 
            tmp=a[j]*i+carry; 
            a[j]=tmp%10; 
            carry=tmp/10; 
 
            //如果有进位,则向前扩展一位 
            if (j==lenth&&carry!=0) 
                lenth++; 
        } 
    } 
    for(int k=lenth;k>=1;k--) 
        printf("%d",a[k]); 

下面计算1000的阶乘:

图片内容