Archiv verlassen und diese Seite im Standarddesign anzeigen : [C/C++] Rechnen mit großen Zahlen
Hallo zusammen!
Ich stehe gerade vor dem Problem, dass ich 2 große Int-Werte vom ursprünglichen Typ mpz_t (GMP) multiplizieren muss.
Die Werte liegen nun im Hex-Format als Array-Darstellung vor, wurden also von mpz_t in Hex "konvertiert".
Nun muss ich mit diesen Hex-Werten rechnen, habe aber keine Ahnung wie. Eine Möglichkeit wäre wohl, wieder in mpz_t zurückzukonvertieren, die andere vieleicht, mit den Arrays zu rechnen? In beiden Fällen hab ich aber keinen Plan :).
Hoffentlich habt ihr was auf Lager, danke schonmal!
Ectoplasma
2010-08-18, 14:31:48
Soll das eine Hausaufgabe sein?
Pinoccio
2010-08-18, 14:32:13
Nun muss ich mit diesen Hex-Werten rechnen, habe aber keine Ahnung wie.en.Wikipedia (http://en.wikipedia.org/wiki/Multiplication_algorithm#Fast_multiplication_algorithms_for_large_inputs) bietet einen Überblick. Wenn du das öfters machst, lohnt sich evtl. was schnelles, für eher einmalige Multiplikation was einfach zu programmierendes.Eine Möglichkeit wäre wohl, wieder in mpz_t zurückzukonvertierenWohl sinnvoller - bzw. erst garnicht aus mpz_t wegzukonvertieren, falls das geht.
Soll das eine Hausaufgabe sein?Unwahrscheinlich - zumindest für Uni-Hausaufgaben viel zu praktisch. ><
mfg
TE-Gast
2010-08-18, 14:58:54
Wohl sinnvoller - bzw. erst garnicht aus mpz_t wegzukonvertieren, falls das geht.
Geht leider nicht.
Nein, es geht um keine Hausaufgabe. Ich will mir privat nur ein kleines Framework schreiben, dass so einige Dinge erleichtert.
Pinoccio
2010-08-18, 16:16:01
Geht leider nicht.
Nein, es geht um keine Hausaufgabe. Ich will mir privat nur ein kleines Framework schreiben, dass so einige Dinge erleichtert.Hm, ich würde da die HEX-Arrays wieder in GMP einlesen (http://gmplib.org/manual/Formatted-Input-Strings.html#Formatted-Input-Strings). Im Optimalfall weißt du ja, mit welcher Formatierung gespeichert wurde, genau die halt wieder zum einlesen. Und dann GMP multiplizieren (http://gmplib.org/manual/Integer-Arithmetic.html#Integer-Arithmetic) lassen, da wird automatisch der schnellste Algorithmus gewählt (http://gmplib.org/manual/Multiplication-Algorithms.html#Multiplication-Algorithms).
mfg
Danke für die Tips!
Irgendwie peil ich's aber grad nicht.
Wie kann ich z.b. ein Array { 0x4f, 0x82, 0xde, 0x3a } einlesen und in mpz_t konvertieren?
Pinoccio
2010-08-19, 15:28:26
Wie kann ich z.b. ein Array { 0x4f, 0x82, 0xde, 0x3a } einlesen und in mpz_t konvertieren?Behandle sie als Charakter-Arrays bzw. Strings und nutze die dafür vorgesehenen Funktionen, z.B. gmp_sscanf.
mfg
Behandle sie als Charakter-Arrays bzw. Strings und nutze die dafür vorgesehenen Funktionen, z.B. gmp_sscanf.
mfg
Soweit war ich auch :). Ich blick nur im GMP-Manual wegen den zig Parametern noch nicht durch. Die verwenden auch echt beschissene Beispiele.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.