⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bigintfactoria.c

📁 将一个数进行阶乘结果会是一个很大的数
💻 C
字号:
/* 大整数的阶乘 */
/* 化乘法为加法 */
#include <stdio.h>
#include <malloc.h>
#define MAXN 1000

void pnext(int a[], int k)    /* 已知a中的k-1的阶乘,求出k的阶乘 */
{
    int *b, m=a[0], i, j, r, carry;
    b = (int *) malloc(sizeof(int)*(m+1));

    for(i=1; i<=m; i++)
        b[i] = a[i];

    for(j=1; j<k; j++)
    {
        for(carry=0,i=1; i<=m; i++)
        {
            r = (i<=a[0] ? a[i]+b[i] : a[i]) + carry;
            a[i] = r%10;
            carry = r/10;
        }
        if(carry)
            a[++m] = carry;
    }

    free(b);
    a[0] = m;
}

void write(int *a, int k)
{
    int i;
    printf("%4d!=",k);
    for(i=a[0]; i>0; i--)
        printf("%d",a[i]);
    printf("\n\n");
}

void main()
{
    int a[MAXN], n, k;
    printf("\nPlease enter the nummber n:");
    scanf("%d", &n);
    a[0] = 1;
    a[1] = 1;
    write(a,1);
    for(k=2; k<=n; k++)
    {
        pnext(a,k);
        write(a,k);
        getch();
    }
    getch();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -