algorithm - primaria - ¿Cuál es el algoritmo más rápido para la división de enteros grandes y locos?
algoritmo de la division primaria (2)
El algoritmo estándar de división larga, que es similar a la división larga de la escuela primaria es el algoritmo D descrito en Knuth 4.3.1. Knuth tiene una extensa discusión sobre la división en esa sección de su libro. El resultado de esto es que hay métodos más rápidos que el algoritmo D, pero no son mucho más rápidos y son mucho más complicados que el algoritmo D.
Si determinó obtener el algoritmo más rápido posible, puede recurrir a lo que se conoce como el algoritmo SRT.
Todo esto y más está cubierto por el camino en el algoritmo de Wikipedia Division .
Necesito dividir los números representados como dígitos en matrices de bytes con una cantidad no estándar de bytes. Puede ser de 5 bytes o 1 GB o más. La división debe hacerse con números representados como matrices de bytes, sin ninguna conversión a números.
La división de dividir y vencer termina siendo mucho más rápida que el método de libros de texto para enteros realmente grandes.
GMP es una biblioteca de gran número de vanguardia. Para casi todo, tiene varias implementaciones de diferentes algoritmos que están afinados para tamaños de operandos específicos.
Aquí está la documentación de "algoritmos de división" de GMP. Las descripciones de los algoritmos son un tanto escuetas, pero al menos le dan algo a google cuando quiere saber más.
La aritmética moderna de Brent y Zimmermann es un buen libro sobre la teoría y la implementación de la aritmética de gran número. Probablemente vale la pena leer si quieres saber lo que se sabe.