Sto cercando di implementare la divisione lunga per bignums. Sfortunatamente non posso usare una libreria come GMP a causa delle limitazioni della programmazione incorporata. Inoltre, voglio l'esercizio intellettuale di imparare come implementarlo. Finora ho aggiunto addizioni e moltiplicazioni usando matrici di byte di lunghezza qualsiasi (quindi ogni byte è come una cifra base di 256).Come implementare la divisione lunga per numeri enormi (bignums)
Sto solo cercando di iniziare a implementare la divisione/modulo e voglio sapere da dove cominciare? Ho trovato un sacco di codice altamente ottimizzato (noto anche come illeggibile) sulla rete, che non mi aiuta, e ho trovato molti white paper matematici altamente tecnici dai quali non posso colmare il divario tra teoria e implementazione .
Se qualcuno potrebbe consigliare un algoritmo popolare e indicarmi una spiegazione semplice e comprensibile che si spinge verso l'implessività, sarebbe fantastico.
-edit: ho bisogno di algoritmi che il lavoro quando il dividendo è ~ 4000bits, e divisore è ~ 2000bits
-edit: Sarà questo lavoro algoritmo con base-256? http://courses.cs.vt.edu/~cs1104/BuildingBlocks/divide.030.html
-edit: È questo l'algoritmo (divisione newton) che dovrei usare davvero? http://en.wikipedia.org/wiki/Division_(digital)#Newton.E2.80.93Raphson_division
Ho trovato questo, ma non sono sicuro che sarà un buon algoritmo per i numeri> 2048 bit? http://stackoverflow.com/questions/2525172/custom-very-long-int-division-issue – Chris
Ho trovato anche questo documento, sarebbe un buon algoritmo per me iniziare? http://www.brinch-hansen.net/papers/1994b.pdf – Chris