Questa è una sfida personale nella mia classe introduttiva di programmazione insegnata con Scheme, ma vorrei essere ugualmente felice con gli esempi di Python.Algoritmo euclideo per la risoluzione RR '- NN' = 1. Esponenziamento modulare con algoritmo Montgomery per implementare il test Fermat nello schema Python o Petite Chez
ho già implementato il metodo binario di elevamento a potenza modulare in programma come segue:
(define (pow base expo modu)
(if (zero? expo)
1
(if (even? expo)
(mod (expt (pow base (/ expo 2) modu) 2) modu)
(mod (* base (pow base (sub1 expo) modu)) modu))))
Ciò è necessario in quanto Chez Scheme non ha alcuna implementazione simile a pow (expo modu base) di pitone.
Ora sto cercando di implementare il metodo Montgomery per risolvere la moltiplicazione modulare. Per fare un esempio, ho:
Trying to solve:
(a * b) % N
N = 79
a = 61
b = 5
R = 100
a' = (61 * 100) % 79 = 17
b' = (5 * 100) % 79 = 26
RR' - NN' = 1
Sto cercando di capire come risolvere RR '- NN' = 1. Mi rendo conto che la risposta a R 'dovrebbe essere 64 e N' dovrebbe essere 81, ma non capisco come usare l'algoritmo euclideo per ottenere questa risposta.