1.4 L’algorithme d’Euclide ´etendu : obtention d’une relation de B´ezout
On se donne encore (a, b)∈(N∗)2.
a) On a vu en cours comment obtenir des coefficients d’une identit´e au +bv =do`u d=a∧b, en
remontant les ´egalit´es de l’algorithme d’Euclide. L’algorithme suivant permet simultan´ement
de calculer le pgcd d=a∧bet un couple (u, v)tel que au +bv =d.
b) Math´ematiquement : On d´efinit des suites qui vont toutes ˆetre finies (rk),(qk),(uk)et
(vk)r´ecurrentes d’ordre deux, (sauf qk) comme suit :
●Initialisation (double sauf pour qk) :
⎧
⎪
⎪
⎨
⎪
⎪
⎩
r0=a, q0=0, u0=1, v0=0,
r1=b, u1=0, v1=1.
●Formule de r´ecurrence : pour tout k≥1, tant que rk≠0
i) (qk, rk+1)est le couple quotient-reste de la division euclidienne de rk−1par rk,
ii) uk+1=uk−1−ukqk, et vk+1=vk−1−vkqk.
c) Terminaison de l’algorithme : L’algorithme pr´ec´edent ≪contient ≫l’algo. d’Euclide du
1.2 et a la mˆeme condition d’arrˆet donc il s’arrˆete.
d) Correction : Puisque pour les (qk)et (rk)on a la mˆeme d´ef. qu’au 1.2 on sait qu’`a l’arrˆet
de l’algorithme pour rN=0, rN−1=a∧b. Examinons les (uk, vk):
Propri´et´e : Pour chaque k,auk+bvk=rk.
D´emonstration : notons Pk∶auk+bvk=rk. Preuve par r´ecurrence double :
●Par l’initialisation au b) P0et P1sont vraies.
●H.R. Supposons que pour un k≥1, Pket Pk−1sont vraies.
Alors auk+1+bvk+1=a(uk−1−ukqk)+b(vk−1−vkqk)=(auk−1+bvk−1)−qk(auk+bvk).
Donc par l’H.R., auk+1+bvk+1=rk−1−qkrket rk−1−qkrk=rk+1par d´ef. de rk+1. Ceci prouve
Pk+1. La r´ec. est ´etablie.
e) Algorithme informatique et impl´ementation en Python : cf. T.P. 8
1.5 Troisi`eme facteur d’analyse d’un algorithme : le coˆut
Une fois qu’on a ´etudi´e la terminaison et la correction d’un algorithme, on peut aussi ´etudier
son coˆut i.e. en combien d’´etapes il se termine et le nombre d’op´erations ´el´ementaires qu’il n´ecessite.
1.5.1 Premi`ere approche pour l’algorithme d’Euclide
Ex. 4 pl. 16 : On consid`ere deux entiers (a, b)∈N2, avec a>b, on note a=bq +rla division
euclidienne de apar b(´etape 0 de l’algo. d’Euclide). On note r0=a,r1=bet pour tout k≥1, tant
que rk≠0, on note rk+1le reste de la division euclidienne de rk−1par rk. On note ici (ce qui est
diff´erent du cours), rN=rN+1qN+1+rN+2avec rN+2=0 la derni`ere ´etape de l’algorithme d’Euclide,
de sorte que cet algorithme a N+1 ´etapes.
a) Montrer que br ≤1
2ab et que pour tout k,rk+1rk≤1
2rkrk−1.
Autrement dit, le produit “dividende-diviseur” est au moins divis´e par 2`a chaque ´etape de
l’algo. d’Euclide
b) En d´eduire que si on note N+1 le nombre d’´etapes de l’algorithme d’Euclide appliqu´e `a a
et balors Nest major´e par log2(a)+log2(b).
4