L'algorithme d'Euclide étendu

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.

n0 := n
b0 := b
t0 := 0
t := 1
q := nombre entier immédiatement inférieur ou égal à n0 / b0
r := n0 - q · b0
Tant que r > 0 faire
   Début
      temp := t0 - q · t
      Si temp >= 0 alors temp := temp mod n, sinon temp := n - ((-temp) mod n)
      t0 := t
      t := temp
      n0 := b0
      b0 := r
      q := nombre entier immédiatement inférieur ou égal à n0 / b0
      r := n0 - q · b0
   Fin
Si b0 <> 1 alors b n'a pas d'inverse modulo n, sinon b-1 mod n = t

Le programme ci-dessous utilise l'algorithme d'Euclide étendu:

     -1   mod     =            


Référence


Didier Müller, 29.10.01