rn= pgcd(a, b) un = u vn = v
0un+1 vn+1
On obtient donc une suite (ri, ui, vi), récurrente d'ordre 2, nécessairement finie car la suite (rn) est strictement décroissante au plus tard à partir du second
rang, et parce que l'on ne peut diviser par 0. On a posé n+1 le premier indice tel que rn+1=0 qui est donc l'indice maximal d'un élément de la suite. On peut
justifier cette construction, plus précisément justifier que l'avant dernier terme de la suite, soit (rn, un, vn) fournit bien le pgcd de a et b et deux coefficients
de Bezout u et v vérifiant pgcd(a, b)= ua + bv. En effet, il est immédiat, par récurrence à partir des deux termes précédents, qu'à chaque étape ri= aui + bvi
(voir le tableau). On en déduit que tout diviseur de a et b divise les ri, combinaisons linéaires de a et b, en particulier rn. Enfin on remarque que si un entier
divise ri+1 et ri, il divise ri-1 (voir le tableau) ; comme rn divise bien rn+1 = 0 et rn, on en déduit par récurrence qu'il divise tous les ri, en particulier r0 = a et
r1 = b, c'est donc bien le pgcd de a et b.
Au cours de la démonstration, on n'a jamais eu besoin de supposer le théorème de Bezout, et de fait, celle-ci fournit également une démonstration de ce
théorème pour deux entiers naturels et on le déduit immédiatement pour deux entiers relatifs.
La définition par récurrence de la suite (ri, ui, vi) fournit directement un algorithme très simple pour calculer les coefficients de Bezout. L'algorithme, va
calculer à chaque étape deux triplets consécutifs de la suite (deux lignes consécutives du tableau ci-dessus). Par exemple on obtient le pgcd et les deux
coefficients de Bezout par la définition récursive suivante :
eucl(r, u, v, 0, u', v') = (r, u, v)
eucl(r, u, v, r', u', v') = eucl(r', u', v', r - (r÷r')*r', u - (r÷r')*u', v - (r÷r')*v') pour r' ≠ 0
On a alors eucl(a, 1, 0, b, 0, 1) = (pgcd(a, b), u, v) avec pgcd(a, b)= a*u + b*v.
De façon à peu près équivalente, on a l'algorithme impératif suivant, qui utilise une boucle while.
Entrée : a, b entiers (naturels)
Sortie : r entier (naturel) et u, v entiers relatifs tels que r = pgcd(a, b) et r = a*u+b*v
Initialisation : r := a, r' := b, u := 1, v := 0, u' := 0, v' := 1
q, rs, us, vs quotient et variables de stockage intermédiaires
les égalités r = a*u+b*v et r' = a*u'+b*v' sont des invariants de boucle.