Heim > Backend-Entwicklung > C++ > Hauptteil

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

Susan Sarandon
Freigeben: 2024-11-24 13:05:14
Original
681 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage