Was ist der Schnellste Algorithmus für die Aufteilung der verrückte große zahlen?
Muss ich zahlen teilen dargestellt, die Ziffern in byte-arrays mit nicht-standard-Anzahl von bytes. Es vielleicht 5 bytes oder 1 GB oder mehr. Division mit zahlen, dargestellt als byte-arrays, ohne Konvertierungen zu zahlen.
- en.wikipedia.org/wiki/Barrett_reduction
- So etwas wie Java BigInteger?
- Barrett-Reduktion berechnet a-Modul, nicht der quotient.
- Könnte Java BigInteger Griff gigs von bytes?
- Der OP sagt nicht, er ist mit Hilfe von Java. Java-Implementierung von beliebiger Genauigkeit Mathematik ist relativ ineffizient, aber umgehen konnte Milliarden von Ziffern, wenn Sie genug Speicher. Es würde eine lange Zeit dauern, um zu berechnen, quotient.
- Für Allgemeine Fragen wie diese sollten Sie mit Hilfe der Wikipedia und hier kommen NACH dem Lesen von wikipedia und versuchte, etwas.
- Es sollte die Unterstützung so groß, eine Nummer, wie Sie passen in den Speicher. Aber ich war darauf verweisen, mehr als ein Ausgangspunkt. Java-API-code ist open source, so können Sie sich, wie Sie es Taten.
- mögliche Duplikate von Algorithmus für die Aufteilung von sehr großen zahlen
- wikipedia gibt keine Antwort auf Fragen, was die Schnellste. Ich keine Notwendigkeit, die Divisionen, die ausgeführt werden sollte für einen Tag.
BigInteger
ist eine ziemlich schlechte Sache zu verwenden, wenn Sie möchten, dass Ihre Operationen schnell sein. Multiplikation und division sind getan-Schulbuch in der kanonischen Realisierung.- und es erhält den Rest, indem Sie zunächst das berechnen der Quotienten, und dann subtrahieren aus den entsprechenden vielfachen der Teiler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Teile und herrsche " -division landet als ganzes viel schneller als die Schulbuch-Methode für wirklich große zahlen.
GMP ist eine state-of-the-art-big-number-library. Für so ziemlich alles, es hat mehrere Implementierungen von verschiedenen algorithmen, die jeweils optimiert für spezifische Operanden-Größen.
Hier GMP ' s "division algorithmen" - Dokumentation. Der Algorithmus Beschreibungen sind ein wenig knapp, aber Sie zumindest geben Sie etwas auf google, wenn Sie mehr wissen wollen.
Brent und Zimmermann ist Modern Computer Arithmetic ist ein gutes Buch über die Theorie und Umsetzung von big-Anzahl rechnen. Wohl Wert, gelesen zu werden, wenn Sie wissen wollen, was bekannt ist.
Den standard long-division-Algorithmus, ähnlich dem der Grundschule lange division wird Algorithmus D beschrieben Knuth 4.3.1. Knuth hat eine umfangreiche Diskussion der division in diesem Abschnitt seines Buches. Im Ergebnis bedeutet dies, dass es schnellere Methoden als Algorithmus D aber Sie sind nicht viel schneller und Sie sind viel komplizierter als Algorithmus D.
Wenn Sie entschlossen, um den schnellsten Algorithmus können Sie in dem resort, was ist bekannt als die SRT-Algorithmus.
All dies und mehr bedeckt ist übrigens auf der Wikipedia -Division-Algorithmus.