Heim >Backend-Entwicklung >C++ >Wie können wir die Fakultät beliebig großer Zahlen ohne externe Bibliotheken berechnen?

Wie können wir die Fakultät beliebig großer Zahlen ohne externe Bibliotheken berechnen?

Susan Sarandon
Susan SarandonOriginal
2024-11-24 13:05:14707Durchsuche

How Can We Calculate the Factorial of Arbitrarily Large Numbers Without External Libraries?

Bestimmung der Fakultät großer Zahlen

Die Berechnung von Fakultäten stellt eine Herausforderung dar, wenn die Ergebnisse die Grenzen nativer Datentypen überschreiten. In diesem Artikel wird eine Technik zur Berechnung von Fakultäten beliebig großer Ganzzahlen vorgestellt, die alle Ziffern in der Lösung offenlegt.

Simulation manueller Berechnungen

In Ermangelung externer Bibliotheken wie GMP müssen wir den Prozess der manuellen Fakultätsberechnung mithilfe eines Arrays von Ganzzahlen nachahmen. Dieses Array stellt die große Zahl dar, wobei jeder Index eine Ziffer enthält.

Fakultärer Berechnungsalgorithmus

Für eine Zahl n wird die Fakultät wie folgt berechnet:

  1. Multiplizieren Sie jede Ziffer im Array mit n.
  2. Speichern Sie das Ergebnis dort Array, mit ordnungsgemäßer Übertragsbehandlung.
  3. Rufen Sie den Algorithmus rekursiv mit n-1 auf, bis er 1 oder 0 erreicht.

Beispielimplementierung

Der bereitgestellte C-Code implementiert den obigen Algorithmus:

#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;
}

Das obige ist der detaillierte Inhalt vonWie können wir die Fakultät beliebig großer Zahlen ohne externe Bibliotheken berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn