ホームページ >バックエンド開発 >C++ >外部ライブラリを使用せずに、任意に大きな数値の階乗を計算し、すべての桁を表示するにはどうすればよいでしょうか?

外部ライブラリを使用せずに、任意に大きな数値の階乗を計算し、すべての桁を表示するにはどうすればよいでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-29 12:15:13799ブラウズ

How Can We Calculate the Factorial of Arbitrarily Large Numbers and Display All Digits Without External Libraries?

すべての桁を表示した任意の大きな数値の階乗の計算

任意の大きな数値の階乗の計算は、古典的なアルゴリズムの問​​題です。ただし、外部ライブラリに依存せずに答えのすべての桁を必要とする場合、独特の課題が生じます。この記事では、この課題に効果的に対処する方法を詳しく掘り下げます。

提案された解決策

この解決策は、整数の配列を使用して階乗を表し、次のように乗算を実行することを中心に展開します。手動で解決する場合はそうします。このアプローチを実装するコードを調べてみましょう。

int max = 5000;

// Display the factorial
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];
  }
}

// Calculate the factorial
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;
}

説明

  • arr 配列は階乗を表します。
  • factorial()階乗と現在の数値を段階的に乗算します。
  • display()

このソリューションは、外部ライブラリを使用せずに大きな数値の階乗を計算するための包括的なアプローチを提供し、結果のすべての桁が表示されるようにします。

以上が外部ライブラリを使用せずに、任意に大きな数値の階乗を計算し、すべての桁を表示するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。