Speichern einer Zahl größer als 20! (Fakultät)

8

Ich versuche, die Zahlen bis 100! (faktoriell) zu finden, aber nach 20! gibt es einen Fehler, da der Wert zu groß ist, um damit umzugehen. Wie kann ich eine solche Nummer speichern?

    
Rishabh 15.11.2011, 09:18
quelle

4 Antworten

11

20 Fakultät ist 19 Ziffern lang. 100 Fakultät ist 158 ​​Ziffern lang und nimmt 500 Bits auf! Es ist eigentlich:

%Vor%

Keiner der Standardtypen funktioniert hier für Sie, sondern Sie müssen Ihre eigene Routine für den Umgang mit so großen Zahlen implementieren.

Zum Beispiel müssen Sie akzeptieren, dass das Multiplizieren von zwei 32-Bit-Werten zusammen zu einem 64-Bit-Ergebnis führen kann.

Dies war eine gängige Praxis, um große Zahlen in den Tagen von 8-Bit-Prozessoren zu berechnen. Es wird als arbiträre Arithmetik bezeichnet.

Hier ist ein Link, um zu beschreiben, wie das gemacht wurde. Zugegeben, es ist für Assembler, aber es gilt immer noch hier. Sie müssen die Standardgrößen von int auf Ihrem System berücksichtigen.

    
ChrisBD 15.11.2011, 09:38
quelle
10

Zumindest unter Linux könnte eine mögliche Bibliothek mit mehreren Genauigkeiten GMP sein (sie funktioniert auch unter Solaris, Windows, MacOSX usw.). .).

    
Basile Starynkevitch 15.11.2011 09:22
quelle
0

Wie würdest du es auf Papier machen?
Multiplikationen mit 160-stelligen Zahlen zu machen, ist für einen Computer nicht so schwer.

Versuchen Sie, Ihre eigene Funktion zu schreiben oder eine vorhandene Bibliothek zu verwenden.

    
pmg 15.11.2011 09:27
quelle
-3

Dieser Code wird bis zu 170! helfen. Verwenden Sie double für die faktorielle Funktion, da normal int oder long int dieses faktorielle Ergebnis nicht unterstützt, double unterstützt bis zu 1.7e308 .

%Vor%     
sharjis Ibne Wadud 19.06.2014 09:49
quelle

Tags und Links