大數階乘(c++實現)


#include <iostream>
using namespace std;
#define N 1000
int BigNumFactorial(int Num[], int n);
void Print(int Num[], int Index, int n);
int main(void)
{
    int n;
    int Num [N] = {1, 0};          //將第一位的數字初始化為1, 其余的都初始化為0
    cout << "你需要計算哪個數字的階乘?" << endl;
    cin >> n;
    int Index = BigNumFactorial(Num, n);
    Print(Num, Index, n);
    return 0;
}
int BigNumFactorial(int Num[], int n)      //大數階乘
{
    int i, j, sum = 1, temp;
    int Index = 0;              //用於表示數組中的有效位置數
    for(i = 2; i <= n; i++)
    {
        temp = 0;
        for(j = 0; j <= Index; j++)
        {
            sum = i * Num[j] + temp;
            if(sum / 10 != 0)       //說明sum不止一位數
            {
                Num[j] = sum % 10;
                temp = sum / 10;        //所謂的‘進位’
            }
            else
            {
                Num[j] = sum;
                temp = 0;
            }
        }
        if(temp != 0)       //如果‘進位’還沒有為0
        {
            Index = j - 1;
            while(temp)
            {
                Index++;
                Num[Index] = temp % 10;
                temp /= 10;
            }
        }
    }
    return Index;
}
void Print(int Num[], int Index, int n)
{
    int i;
    cout << n << "階的結果為: ";
    for(i = Index; i >= 0; i--)
    {
        cout << Num[i];
    }
    cout << endl;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM