benutzen von uebergroßen Zahlen
-
Hi Leute!
Ich bin leider noch kein C++Profi, aber vielleicht ist ja unter euch jemand, der helfen kann. Gibt es eine fertige Funktion in cpp die seeehr große Zahlenwerte - sagen wir z. B. 1e333 oder groeßer - einlesen und verarbeiten kann?
Mit einlesen meine ich uebergeben von einer anderen Funktion oder von mir aus auch von der Tastatur oder einer Datei.
Verarbeiten soll bedeuten saemtliche mathematischen/logischen Operationen und evtl. konkatenation u.s.w.
Fuer mir sowas selber schnell zu tippen bin ich einfach noch nicht maechtig genug.
Vielen Dank fuer eure Hilfe!
-
Wofür denn solch riesige Zahlen, wenn man fragen darf?
-
Naja, ich habe ein bisschen mit Primzahlen und Verschlüsselung rumgespielt... wollte halt mal was richtiges draus machen
-
.filmor schrieb:
Wofür denn solch riesige Zahlen, wenn man fragen darf?
Was issen das für ne Frage?
-
Probier mal "long double" aus oder das Template std::complex aus der Header <complex>.
-
Artchi schrieb:
.filmor schrieb:
Wofür denn solch riesige Zahlen, wenn man fragen darf?
Was issen das für ne Frage?
Nuja, ich hab nur nachgefragt weil mir derartig große Zahlen bisher noch nicht begegnet sind. Und ich glaube nicht das long double funktioniert wenn es um Primzahlen geht, bei denen kommt es doch eigentlich auf echte Genauigkeit an.
-
Die Frage wofür ist auf jeden Fall berechtigt. Für verschiedene Zwecke eignen sich unterschiedliche Vorgehensweisen.
Was genau hat eigentlich der Hinweis auf std::complex hier zu suchen?
-
Der Hinweis auf long double ist auch fraglich, weil man bei 1e333 mehr als 1000 Bit benötigt.
Jester: Du kennst doch ne Möglichkeit, mit Modulo so große Zahlen zu "umgehen".
-
Michael E. schrieb:
Jester: Du kennst doch ne Möglichkeit, mit Modulo so große Zahlen zu "umgehen".
Prinzipiell schon, aber nur wenn es das Problem hergibt. Das geht leider nicht immer. Um das zu beurteilen braucht man auf jeden Fall ne vollständige Problembeschreibung.
-
Wie wärs mit ner eigenen Klasse extralanger Ints?
Bsp:
nehme ein Klasse, die bei Erstellung sagen wir 4 Byte Speicher alloziiert. Wenn du über das Maximum dieser 4 Bytes hinausschießt, alloziierst du wieder 4 neue Bytes. und hast mal eben einen Faktor 2 hoch 64 größeren Bereich. Prinzipiell ist die Größe der Zahlen dann nur durch den verfügbaren Speicher begrenzt...
-
Die Zahl ist schon mit double darstellbar, allerdings nur mit 16 Stellen Auflösung.
Wenn er Zahlen dieser Größenordnung für Primzahlen oder ähnliches braucht, sind alle float-Formate inakzeptable.
Die Zahlen die er braucht liegen alle im bereich der Natürlichen Zahlen >0.Ich habe im Netz schon ein paar mal Biblotheken gesehen die einem lange IntegerZahlen zur Verfügung stellen, am besten mal Googlen.
Die Lösungen die die Zahl als String darstellen und eine Stellenweise berechnung machen, fallen aber hier wegen der Laufzeitproblematik unten durch
-
-
Artchi schrieb:
Probier mal das Template std::complex aus der Header <complex>.
*lol*
-
Nimm einfach Java und nutze die Klasse "biginteger". Da zeigt sich mal wieder, dass Java einfach die bessere Sprache ist.
-
JavaFan schrieb:
Nimm einfach Java und nutze die Klasse "biginteger". Da zeigt sich mal wieder, dass Java einfach die bessere Sprache ist.
nein java hat nur die bessere library.
-
Hätte unser Javafan den Thread gelesen, wäre ihm aufgefallen, dass Braunstein einen Link auf die GMP hinterlassen hat, die genau das macht. Und, wenn ich das hinzufügen darf, sowohl intuitiver als auch flexibler als auch schneller als die Java Bignum-Bibliothek. Operatorüberladung sei Dank.
-
0xdeadbeef schrieb:
Hätte unser Javafan den Thread gelesen, wäre ihm aufgefallen, dass Braunstein einen Link auf die GMP hinterlassen hat, die genau das macht. Und, wenn ich das hinzufügen darf, sowohl intuitiver als auch flexibler als auch schneller als die Java Bignum-Bibliothek. Operatorüberladung sei Dank.
Der JavaFan hätte das aber wohl lieber in der Standardlibrary drin.
-
ist gmp das beste library??
-
0xdeadbeef schrieb:
Operatorüberladung sei Dank.
ist doch eine c library?!
-
Eigentlich sollte das ja ne kleine Flamewar starten, aber kommt ja recht schwer in Gange
Was ist los, schon das Wochenende vor Augen