C语言实现高精度(大位数)阶乘

85 阅读1分钟

1.进位

int s=c[j]*i+jw;
            jw=s/10;
            c[j]=s%10;

源码

#include <stdio.h>
#include <string.h>
#define Max 3000
void multiply(int n);
int main()
{
    int n;
    scanf("%d",&n);
    factorial(n);
}
void factorial(int n){
    int c[Max]={0};
    c[0]=1;
    for(int i=2;i<=n;i++){
        int jw=0;
        for(int j=0;j<Max;j++){
            int s=c[j]*i+jw;
            jw=s/10;
            c[j]=s%10;
        }
    }
    int len=Max;
    for(int i=len-1;i>=0;i--)
    {
        if(c[i]==0&&len>1)
            len--;
        else
            break;
    }

    for(int i=len-1;i>=0;i--)
        printf("%d",c[i]);
}

以上代码仅供参考