L'algorithme d'Euclide étendu permet de calculer l'inverse
de b modulo n s'il existe.
Rappelons que l'inverse modulo n de b est le nombre entier b-1 tel
que b·b-1 (mod n) = 1. Par exemple 7 est l'inverse modulo 9 de 4,
car 4·7 (mod 9) = 28 (mod 9) = 1.
no := n bo := b to := 0 t := 1 q := nombre entier immédiatement inférieur ou égal à no / bo r := no - q · bo Tant que r > 0 faire Début temp := to - q · t Si temp 0 alors temp := temp mod n, sinon temp := n - ((-temp) mod n) to := t t := temp no := bo bo := r q := nombre entier immédiatement inférieur ou égal à no / bo r := no - q · bo Fin Si bo 1 alors b n'a pas d'inverse modulo n, sinon b-1 mod n = t |
Calculons 5-1 mod 77. Pour faciliter les calculs, faisons un tableau
que nous remplirons ligne par ligne.
n0
|
b0
|
r
|
q
|
t0
|
t
|
temp = (t0 - q·t) mod 77 |
77
|
5
|
2
|
15
|
0
|
1
|
62 = -15 + 77 |
5
|
2
|
1
|
2
|
1
|
62
|
31 = -123 + 77 + 77 |
2
|
1
|
0
|
2
|
62
|
31
|
Le programme ci-dessous utilise l'algorithme d'Euclide étendu:
Vous vérifierez vos résultats avec le programme ci-dessus.
Ecrivez un programme Python qui applique l'algorithme d'Euclide étendu, en écrivant toutes les étapes du tableau. Solution.
Didier Müller, 28.1.21 |