Cómo implementar una división larga para números enormes (bignums)

Estoy tratando de implementar una división larga para bignums. Desafortunadamente, no puedo usar una biblioteca como GMP debido a las limitaciones de la programación integrada. Además, quiero el ejercicio intelectual de aprender a implementarlo. Hasta ahora, he sumado y multiplicado usando matrices de bytes de cualquier longitud (por lo que cada byte es como una base de 256 dígitos).

Solo estoy tratando de comenzar a implementar la división / módulo y quiero saber por dónde empezar. He encontrado un montón de código altamente optimizado (también conocido como ilegible) en la red, lo que no me ayuda, y he encontrado muchos documentos técnicos matemáticos altamente técnicos de los que no puedo cerrar la brecha entre la teoría y la implementación .

Si alguien pudiera recomendar un algoritmo popular y señalarme una explicación simple de entender que se inclina hacia la implicación, sería fantástico.

-editar: necesito algoritmos que funcionen cuando el dividendo sea ~ 4000bits, y el divisor sea ~ 2000bits

-editar: ¿Funcionará este algoritmo con base-256?http://courses.cs.vt.edu/~cs1104/BuildingBlocks/divide.030.html

-editar: ¿Es este el algoritmo (división de newton) que realmente debería usar?http://en.wikipedia.org/wiki/Division_(digital)#Newton.E2.80.93Raphson_division

Respuestas a la pregunta(3)

Su respuesta a la pregunta