Fakultät zusammenfassen?

5 Antworten

Hallo!

Sieht etwa so aus wie Eulers Formel zur Berechnung von Permutationen bei mehrfachen auftreten einzelner Elemente innerhalb einer Klasse.

n = (a+b!)/(a!*b!)

Aber dazu passt die obere Zahl nicht, müsste dann 500 sein.

also mal einzeln ausrechnen

519!= 3.38662e+1185

480! = 1.88031e+1080

20! = 2432902008176640000

Da ja das Produkt von

20! * 480!

viel zu groß sein dürfte, empfehle ich zuerst 519! / 480! zu rechnen, dann dieses Ergebnis durch 20!

Ergebnis =

740307921005655649976238767440142425160819336938657320739969821129773847597485628850176.000000

Ich habe c-Programmierung als Hobby. Da habe ich mir ein Rechenprogramm selber zusammengeschustert. Für einen Taschenrechner sind diese Zahlen viel zu groß, da meist mit Integer-Variablen gearbeitet wird.

Der gewöhnliche Datentyp long besitzt nur einen Wertebereich von

0 bis 18,446,744,073,709,551,615

Der Fließkommatyp long double hat 10 Byte Länge und einen Wertebereich von bis zu 1,2E4932 also 1,2 mal 10 hoch 4392 damit kann man bis zu 1550! rechnen.

Tut zwar weh, wenn man dafür eine Fliesskommavariable hernehmen muss aber bei Integertypen geht der Wertebereich nicht so hoch, deshalb diser Notnagel.

Die Datentypen sind aber Implementationsbedingt. Bei Microsoft sind double und long double gleich lang. Sonst double 8 Byte, long double 10 Byte.

Einsatzgebiete für diese Formel von Euler ist die Berechnung der möglichen Permutationen bei der Verschlüsselung von Dateien auf Bitebene durch Transposition der Bitwerte. Bei 512 Bit und einer genauen Gleichverteilung von gesetzten und nicht gesetzten Bits ergibt sich

Bei 50-prozentiger Verteilung ergibt das folgende Tabelle:
Bytezahl... Bitzahl .......mögliche Permutationen 
Nibbel........4............6
1.............8............70
2.............16...........12870
4.............32...........6.0108E+8
8.............64...........1.83262E+18
16............128..........2.39511E+37
32............256..........5.76866E+75
64............512..........4.72553E+152
128...........1024.........4.48125e+306
256...........2048.........5.69709e+614
512...........4096.........1.30195e+1231
1024..........8192.........9.61516e+2436
2048..........16384 .......7.41605e+4929
4096..........32768........?????? (ca. 45 Sekunden um die Zahlenfolge herzustellen)
8192..........65536........?????? (Herstellungszeit des Codes: 75 Sekunden bis 3Minuten)
18384.........131072.......?????? (Herstellungszeit des Codes: 15-25 Minuten!!!!!) 

Ich hatte mal ein Verschlüsselungsprogramm mit einer 
möglichen Permutationszahl des Schlüssel von 131072!
Faktorielle erstellt. Ist nur für Linux-Systeme zu haben
auf www.programmierer-forum.de unter dem Namen Talarius.

Hoffe geholfen zu haben.

Hallo,

gehört 480! auch noch zum Nenner? Wenn, dann mußt Du unbedingt eine Klammer setzen.

Angenommen, es sei so, kannst Du die ersten 480 Glieder der Produktkette ersatzlos streichen, so daß im Zähler 481*482*...*518*519 übrigbleiben

Davon kannst Du einige noch durch die Zahlen von 1 bis 20 im Nenner kürzen.

So hat der Taschenrechner keine Probleme mehr.

Herzliche Grüße,

Willy

519 gegen 480

oben bleibt 

519*518*.....481

vermutlich kannst du gegen diesen Rest das meiste aus 20*19*...*1 kürzen.

bei 519!/20! * 480! ist nix zu machen , da braucht es den Wolfram 

mit 10 hoch 86 ist das Ergebnis grade noch im TR sichtbar.

https://www.wolframalpha.com/input/?i=+519%21+%2F+%2820%21*480%21%29

Fakultät ist doch nur eine verkürzte Schreibweise einer Multiplikation.

Und bei Brüchen bietet es sich an, vorm Ausrechnen zu kürzen.

Beides kombiniert gibt einen immer noch etwas unhandlichen Ausdruck, der aber schon merklich mehr "taschenrechnertauglich" ist.


chaostheorie314  25.07.2020, 16:21

Wenn es nicht reicht, kann man immer noch Zähler und Nenner in Primfaktoren zerlegen und mit diesen weiter kürzen.

1

Die sind definitiv viel zu groß für den Rechner. Steht das 480! im Nenner? Dann kannst du viel kürzen. Kürze doch mal (1*2*3*4*5)/(1*2*3*4)...