編程學習網 > 編程語言 > C/C++開發 > 如何用c語言編寫實現1000階乘?(c語言怎么算1000的階乘)
2022
07-01

如何用c語言編寫實現1000階乘?(c語言怎么算1000的階乘)

如何用C語言實現1000的階乘?看似一個很簡單的計算,如果是Python只需要5行左右的代碼,C語言實現卻需要50行,因為C語言的數據位數是有限的,無法使用簡單的累乘計算結果,該運算需要縝密的思維

代碼如下:

#include <stdio.h>
#define MAX 10000

// 計算1000的階乘
void Print_Factorial ( const int N );
int main(void)
{
    int N;
    printf("請輸入想要求的階乘:\n");
    scanf("%d", &N);
    Print_Factorial(N);
    return 0;
}

void Print_Factorial(const int N)
{
    int value[MAX] = {0};       // 存儲結果
    int value_size = 1;         // 存儲結果的位數
    int carry_Bit = 0;          // 存儲進位的數字
    value[0] = 1;
    for(int num = 2; num <= N; ++num)
    {
        for(int i = 0; i < value_size; ++i)
        {
            int temp = value[i] * num + carry_Bit;  // temp中存的值等于上次運算的結果乘以這次需要累乘的數加進位數字
            value[i] = temp % 10;                   // 保留本位數據進入當前數組
            carry_Bit = temp / 10;                  // 進位數字等于temp除以10的商
        }
        while(carry_Bit != 0)                       // 出現需要進位的數字,處理進位數字carry_Bit
        {
            value[value_size] = carry_Bit % 10;     // carry_Bit有可能位數大于1,value數組每位只能存一位數
            ++value_size;                           // 數字位數加一
            carry_Bit = carry_Bit / 10;             // 再次計算下一位進位數字
        }
    }
    // 輸出
    if(N >= 1)
    {
        printf("結果為:\n");
        for(int i = value_size-1; i >= 0; --i)
        {
            printf("%d", value[i]);
        }
        printf("\n");
    }
    else
    {
        printf("Error Input\n");
    }
}
演示:

以上就是“如何用c語言編寫實現1000階乘?(c語言怎么算1000的階乘)”的詳細內容,想要了解更多C語言教程歡迎持續關注編程學習網

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取