logo

Algorithme d'Euclide


Algorithme d'Euclide : encyclopédie mathématiques

wikipediaCet article est issu de l'encyclopédie libre Wikipedia.
Vous pouvez consulter l'article ici ainsi que son historique.
Les textes et les images sont disponibles sous les termes de la Licence de documentation libre GNU.

L'algorithme d'Euclide est un algorithme permettant de déterminer le plus grand commun diviseur (P.G.C.D.) de deux entiers dont on ne connaît pas la factorisation. Il est déjà décrit dans le livre VII des Éléments d'Euclide.

Sommaire

[modifier] Description

[modifier] Explications géométriques

Dans la tradition grecque, en comprenant un nombre entier comme une longueur, un couple d'entiers comme un rectangle, leur PGCD est la longueur du côté du plus grand carré permettant de carreler entièrement ce rectangle. L'algorithme décompose ce rectangle en carrés, de plus en plus petits, par divisions euclidiennes successives, de la longueur par la largeur, puis de la largeur par le reste, jusqu'à un reste nul.

Euclide2115.svg

Dans le rectangle de dimensions L=21 par l=15 ci-dessous, par exemple, on peut glisser un carré de côté 15 mais il reste un rectangle de côtés 15 et 6, dans lequel on peut glisser deux carrés de côté 6 mais il reste un rectangle de côtés 6 et 3 que l'on peut carreler entièrement de carrés de côté 3. Les carrés de côté 6 ou 15 peuvent aussi se carreler en carrés de côté 3. Le rectangle entier peut se carreler en carrés de côté 3. Il n'existe pas de carré plus grand permettant un tel carrelage.

[modifier] Explications arithmétiques

On considère que pgcd(a,0) = a et que pour b ≠ 0 pgcd(a,b) = pgcd(b, a mod b). On progresse dans l'algorithme en diminuant à chaque étapes les nombres considérés par calcul du modulo.

[modifier] Généralisation

Cet algorithme repose sur la structure d'anneau euclidien de l'anneau \mathbb{Z} des entiers relatifs, plus particulièrement sur la propriété de division euclidienne. Il se généralise donc à bien d'autres anneaux, en particulier les anneaux de polynômes à coefficients dans un corps. L'algorithme se généralise pour permettre le calcul des coefficients de Bezout.

L'algorithme est effectif à condition de disposer d'un algorithme effectif de division euclidienne. La possibilité de disposer d'un tel algorithme rend de nombreux autres calculs effectifs, notamment, en algèbre linéaire, le calcul de facteurs invariants.

[modifier] Remarque préliminaire

Puisque l'algorithme a pour objet le calcul d'un PGCD, il est possible de se restreindre aux entiers positifs, un PGCD de deux entiers relatifs étant égal au PGCD de leurs valeurs absolues.

[modifier] Description de l'algorithme

Soient deux entiers naturels a et b, dont on cherche le PGCD. Le cas oĂą a ou b est nul ne nĂ©cessite aucun algorithme ; on l'exclut. Une suite d'entiers (an)n est dĂ©finie par rĂ©currence de pas 2, plus prĂ©cisĂ©ment par divisions euclidiennes successives ; la suite est initialisĂ©e par a0 = a, a1 = b, puis propagĂ©e par la règle de rĂ©currence : tant que an+1 est non nul, an+2 est dĂ©fini comme le reste de la division euclidienne de an par an+1.

On commence donc par calculer le reste de la division de a par b, qu'on note r ; puis on remplace a par b, puis b par r, et on rĂ©applique le procĂ©dĂ© depuis le dĂ©but.

On obtient ainsi une suite, qui vaut 0 Ă  un certain rang ; le PGCD cherchĂ© est le terme prĂ©cĂ©dent de la suite.

Il est intĂ©ressant de noter que si a < b, la première itĂ©ration de la boucle a pour effet de "permuter a et b". Plus prĂ©cisĂ©ment : dans ce cas, la division euclidienne de a par b s'Ă©crit a = b.0 + a donc a2 = a, si bien que la suite produite par l'algorithme appliquĂ© au couple (a, b) commence par a, suivie de la suite produite par l'algorithme appliquĂ© au couple (b, a).

[modifier] Exemple

PGCD.png

Calculons, par exemple, le PGCD de 1071 et de 1029 Ă  l'aide de l'algorithme d'Euclide :

1071 = 1029 Ă— 1 + 42

1029 = 42 Ă— 24 + 21

42 = 21 Ă— 2 + 0

Il faut prendre le dernier reste avant le zĂ©ro, donc PGCD(1071 ; 1029) = 21

[modifier] Remarque historique

Au dĂ©but, Euclide a formulĂ© le problème de façon gĂ©omĂ©trique : comment trouver une « unitĂ© de mesure Â» commune pour deux longueurs de segments. Il procède par soustractions rĂ©pĂ©tĂ©es de la longueur du plus court segment sur la longueur du plus long. Cela correspond Ă  une adaptation de la mĂ©thode naĂŻve de calcul de la division euclidienne, telle que dĂ©crite dans l'article consacrĂ©.

[modifier] Démonstration de sa finitude et de son exactitude

La dĂ©finition mĂŞme de la suite (a_n) par division euclidienne montre que, pour tout n tel que a_{n+1} est non nul, il existe un entier q_{n+2} tel que :  a_{n}=q_{n+2}\times a_{n+1}+a_{n+2}

avec de plus 0\leq a_{n+2}<a_{n+1} pour tout n tel que a_{n+1} non nul. La suite d'entiers naturels (a_n) est donc strictement décroissante (tant qu'elle est non nulle) à partir du rang 1, et donc vaut 0 à un certain rang. L'existence d'un dernier reste non nul est ainsi établie.

Soit N + 1 l'indice de ce dernier reste non nul. Il faut montrer que a_{N+1} est bien le PGCD cherchĂ©. La relation prĂ©cĂ©dente s'Ă©crit donc ici a_N=q_{N+2}\times a_{N+1}, qui montre que a_{N+1} divise a_N. Écrivant ensuite a_{N-1}=q_{N+1}\times a_N+a_{N+1}, on en dĂ©duit que a_{N+1} divise aussi a_{N-1} ; puis, de mĂŞme, et par rĂ©currence, que a_{N+1} divise tous les termes de la suite a_n ; en particulier les premiers termes a et b. a_{N+1} est donc bien un diviseur commun de a et b. RĂ©ciproquement, tout diviseur commun de a et b divisera aussi a_2=a-q_2\times b, et Ă  nouveau par rĂ©currence, divisera tous les termes de la suite (a_n) ; donc en particulier a_{N+1}.

a_{N+1} est donc un diviseur commun de a et b que divise tout autre diviseur commun ; c'est bien le PGCD.

[modifier] Le théorème de Lamé

Le théorème de Lamé stipule que le nombre d'étapes de l'algorithme d'Euclide exécuté sur deux entiers est borné (supérieurement) par cinq fois le nombre de chiffres nécessaire à écrire (en base 10) le plus petit de ces deux entiers.

On peut en fait ĂŞtre lĂ©gèrement plus prĂ©cis : le nombre d'Ă©tapes de l'algorithme d'Euclide exĂ©cutĂ© sur deux entiers a et b, avec b\leq a, est bornĂ© par la partie entière de \ln(b)/\ln(\varphi), oĂą \ln dĂ©signe le logarithme naturel et \varphi est le nombre d'or.

Comme le nombre de chiffres de l'écriture de b en base 10 est \ln(b)/\ln(10) et que la quantité \ln(10)/\ln(\varphi) est inférieure à 5 (elle vaut environ 4,78497), on retrouve bien le théorème de Lamé.

De plus, cette majoration est la meilleure possible, puisqu'elle est atteinte quand a et b sont deux nombres de Fibonacci consécutifs.

[modifier] Algorithme étendu aux coefficients de Bézout

Article dĂ©taillĂ© : Algorithme d'Euclide Ă©tendu.

L'identitĂ© de BĂ©zout assure l'existence de deux entiers u et v tels que : au+bv=a_{N+1}=PGCD(a,b). L'algorithme d'Euclide convenablement adaptĂ© permet de calculer de tels coefficients.

[modifier] Description

Pour cela, on introduit deux suites (u_n) et (v_n) telles que pour tout n, on ait la relation : au_n+bv_n=a_n. Si de telles suites existent, les termes u_{N+1},v_{N+1} constitueront une paire de coefficients de Bezout pour a et b.

On peut choisir u_0=1, v_0=0 puis u_1=0,v_1=1, puis la relation de rĂ©currence de pas 2 entre les a_n montre :

 a_{n+2}=a_n-q_{n+2}a_{n+1}
=au_n+bv_n-q_{n+2}(au_{n+1}+bv_{n+1})
=a(u_n-q_{n+2}u_{n+1})+b(v_n-q_{n+2}v_{n+1})

On peut ainsi dĂ©finir (u_n) par la relation de rĂ©currence de pas 2 : u_{n+2}=u_n-q_{n+2}u_{n+1} et l'initialisation prĂ©cĂ©dente, et (v_n) par v_{n+2}=v_n-q_{n+2}v_{n+1} et l'initialisation prĂ©cĂ©dente ; et on obtient bien la relation annoncĂ©e pour tout n.

[modifier] Commentaires

L'algorithme Ă©tendu s'implĂ©mente comme l'algorithme classique ; il suffit de rajouter des variables correspondant aux coefficients u et v Ă  calculer, et de faire une multiplication et une soustraction supplĂ©mentaires, pour calculer chacun des deux nouveaux coefficients, Ă  chaque Ă©tape.

[modifier] Fractions continues

Article dĂ©taillĂ© : fraction continue.

Les quotients successifs qui apparaissent quand l'algorithme d'Euclide est appliqué aux données a et b, sont précisément les nombres qui apparaissent dans la représentation sous forme de fraction continue de a/b. Considérons l'exemple de a = 1071 et b = 1029 utilisé ci-dessus.

Voici le calcul avec les quotients soulignés (successivement 1, 24 et 2):

1071 = 1029 Ă— 1 + 42
1029 = 42 Ă— 24 + 21
42 = 21 Ă— 2 + 0

De cela on tire :

\frac{1071}{1029} = \mathbf{1} + \frac{1}{\mathbf{24} + \frac{1}{\mathbf{2}}}.

Dans l'égalité précédente, le second membre s'appelle la fraction continue ou continuée du quotient 1071/1029.

On peut en dĂ©duire les 3 approximations suivantes de la fraction, classĂ©es par ordre de prĂ©cision croissante :

  • \frac{1071}{1029} \simeq \mathbf{1} = \frac{1}{1}
  • \frac{1071}{1029} \simeq \mathbf{1} + \frac{1}{\mathbf{24}} = \frac{25}{24}
  • \frac{1071}{1029} = \mathbf{1} + \frac{1}{\mathbf{24} + \frac{1}{\mathbf{2}}} = \frac{51}{49}

Cette mĂ©thode peut Ă©galement ĂŞtre utilisĂ©e pour des nombres rĂ©els a et b ; comme dans le cas de deux entiers, la suite de quotients calculĂ©s reprĂ©sente la « dĂ©composition en fraction continue Â» de a/b et fournit une suite d'approximations successives, de qualitĂ© croissante, du quotient a/b. Dans le cas oĂą ce quotient est irrationnel, l'algorithme d'Euclide ne se termine pas et la suite des approximations obtenues est donc elle-mĂŞme infinie !

nota : La dĂ©composition en fraction continuĂ©e (et la sĂ©rie d'approximations successives correspondante) peut ĂŞtre appliquĂ©e, non seulement Ă  un nombre rĂ©el quelconque, mais Ă©galement Ă  une fonction : cette dĂ©marche consiste Ă  rechercher les approximants de PadĂ©, dont on peut dĂ©finir le principe comme suit : Au voisinage d'un point, le dĂ©veloppement en sĂ©rie de Taylor d'une fonction donnĂ©e fournit un polynĂ´me qui rĂ©alise une approximation de la fonction. Mais on peut Ă©galement chercher une fraction rationnelle qui satisfasse les mĂŞmes conditions que la partie polynomiale du dĂ©veloppement de Taylor : l'Ă©galitĂ© des dĂ©rivĂ©es de la fonction et de son approximation, jusqu'Ă  un certain ordre donnĂ©.

La comparaison de ces deux types de développements permet de très intéressants développements, comme la démonstration de l'irrationalité de ζ(3).

[modifier] Voir aussi

  • Algorithme d'Euclide Ă©tendu
  • Lemme d'Euclide

[modifier] Liens externes

wikipediaCet article est issu de l'encyclopédie libre Wikipedia.
Vous pouvez consulter l'article ici ainsi que son historique.
Les textes et les images sont disponibles sous les termes de la Licence de documentation libre GNU.


maths - prof de maths haut de pagehaut Retrouvez cette page sur ilemaths l'île des mathématiques
© Tom_Pascal & Océane 2012