2008-08-25 7 views
6

Bei Berechnungen mit sehr großen Zahlen, bei denen integrale Datentypen wie double oder int64 zu kurz kommen, ist möglicherweise eine separate Klasse für die Verarbeitung solch großer Zahlen erforderlich.Effizienteste Implementierung einer großen Zahlklasse

Gibt es jemanden, der einen effizienten Algorithmus für die beste Vorgehensweise anbietet?

Antwort

4

Die eingebauten Funktionen einer Sprache funktionieren für mich.

Java hat BigInteger und BigDecimal und Python schaltet automagicaly auf ein Objekt ähnlich wie Java, ob eine Zahl aus dem Bereich eines integer oder Dingsbums bekommt.

Wie für andere Sprachen, habe ich keine Ahnung.

Ich hasse es, das Rad neu zu erfinden.

12

Es gibt zwei Lösungen für Ihr Problem:

  • einfache Art und Weise: eine externe Bibliothek verwenden wie "The GNU MP Bignum Library und vergessen über Implementierungsdetails.

  • harte Art und Weise: Gestalten Sie Ihre eigene Klasse/Struktur mehrere höherer Ordnung Datentypen wie Doppel- oder int64 Variablen enthalten und grundlegende mathematische Operationen definieren für sie Operator Überlastung (in C++) oder über Methoden genannt Addieren, Subtrahieren, Multiplizieren , Verschiebung usw. (in JAVA und anderen OO-Sprachen).

Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen. Ich habe das in der Vergangenheit schon ein paar Mal gemacht.

3

Eine eigene BigNum-Bibliothek zu erstellen ist kompliziert, also würde ich sagen wie jjnguy. Verwenden Sie, was auch immer Ihre Sprache als Bibliotheken anbietet.

In .net verweisen Sie auf die VisualJ-DLL, da sie die Klassen BigInteger und BigDecimal enthalten. Sie sollten jedoch einige Einschränkungen dieser Bibliotheken beachten, wie zum Beispiel das Fehlen einer Quadratwurzelmethode.