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:
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!