开发进行时...

crazy coder

Avatar

可容纳40位数的求n!的程序

数据结构为数组,运用数组来弥补整数数据类型有限的使用范围。
n! = n* (n-1)!

"factorial.c"

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int N=1;    //the number u input
    int Data[40]; // the result
    printf("plz input the number:");
    scanf("%d",&N);
    int i,j,r,k;

    int Digit=1;

    for(i=1;i<41;i++)
    {
        Data[i] = 0;
    }
    Data[0] = Data[1] = 1;//init array, needed
    for(i=1;i<=N; i++)
    {
        for(j=1;j<Digit+1;j++)
            Data[j] *= i; //calculate in array
        for(j=1;j<Digit+1;j++)
        {
            if(Data[j]>10)
            {
                for(r=1;r<Digit+1;r++)
                {
                    if(Data[Digit]>10)
                        Digit++;
                    Data[r+1] += Data[r]/10;
                    Data[r] = Data[r]%10;
                }
            }
        }
        printf("%d! = ",i);
        for(k=Digit;k>0;k--)
        {
            printf("%d",Data[k]);
        }
        printf("\n");
    }
}

gcc factorial.c -o factorial