大きな数の階乗の決定
階乗の計算は、結果がネイティブ データ型の制限を超える場合に問題が発生します。この記事では、任意の大きな整数の階乗を計算し、解内のすべての桁を明らかにする手法を紹介します。
手動計算のシミュレーション
GMP などの外部ライブラリがない場合、整数の配列を使用した手動階乗計算のプロセスを模倣する必要があります。この配列は大きな数値を表し、各インデックスは 1 桁を保持します。
階乗計算アルゴリズム
数値 n の場合、階乗は次のように計算されます。
実装例
提供された C コードは上記を実装しますアルゴリズム:
#include <iostream> #include <cstring> int max = 5000; void display(int arr[]) { int ctr = 0; for (int i = 0; i < max; i++) { if (!ctr && arr[i]) ctr = 1; if (ctr) std::cout << arr[i]; } } void factorial(int arr[], int n) { if (!n) return; int carry = 0; for (int i = max - 1; i >= 0; --i) { arr[i] = (arr[i] * n) + carry; carry = arr[i] / 10; arr[i] %= 10; } factorial(arr, n - 1); } int main() { int *arr = new int[max]; std::memset(arr, 0, max * sizeof(int)); arr[max - 1] = 1; int num; std::cout << "Enter the number: "; std::cin >> num; std::cout << "Factorial of " << num << " is :\n"; factorial(arr, num); display(arr); delete[] arr; return 0; }
以上が外部ライブラリを使わずに任意に大きな数の階乗を計算するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。