Aller au contenu

Nombres · 4 affiches · formule n° 61

L’algorithme d’Euclide

L’algorithme d’Euclide calcule le plus grand diviseur commun de deux entiers par une suite de divisions euclidiennes. Il repose sur une seule égalité : le PGCD de a et b est aussi celui de b et du reste de la division de a par b.

Voir les 4 affiches 9 contrôles par le calcul

Pour des entiers naturels aa et b≠0b \neq 0 ; amodba \bmod b est le reste de la division euclidienne de aa par bb. On recommence jusqu’au reste nul : pgcd(a,0)=a\operatorname{pgcd}(a, 0) = a. Dessin : le rectangle 1071×4621071 \times 462 pavé de carrés aussi grands que possible ; les plus petits ont pour côté le PGCD.

Quatre styles

Les affiches

La même formule, le même dessin calculé, en Papier, Nuit, Bauhaus ou Tableau noir. En affiche, toile, plexiglas ou aluminium.

Ce que dit la formule

Pour tous entiers naturels aa et bb avec b≠0b \neq 0 :

pgcd(a,b)=pgcd(b, amodb)\operatorname{pgcd}(a, b) = \operatorname{pgcd}(b,\ a \bmod b)
  • pgcd(a,b)\operatorname{pgcd}(a, b) : le plus grand commun diviseur de aa et bb, c’est-à-dire le plus grand entier qui divise à la fois aa et bb.
  • amodba \bmod b : le reste de la division euclidienne de aa par bb. C’est l’unique entier rr tel que a=qb+ra = qb + r avec qq entier et 0≤r<b0 \leq r < b ; qq est le quotient.
  • La condition b≠0b \neq 0 est indispensable : on ne divise pas par zéro.

L’algorithme. On remplace le couple (a,b)(a, b) par (b,r)(b, r), puis on recommence. Le reste diminue strictement à chaque étape, donc il finit par valoir 00. On s’arrête alors grâce à la règle pgcd(a,0)=a\operatorname{pgcd}(a, 0) = a (tout entier divise 00) : le PGCD est le dernier reste non nul.

Si a<ba < b, la première division donne q=0q = 0 et r=ar = a : l’algorithme commence simplement par échanger les deux nombres.

Un exemple

Calculer pgcd(1071,462)\operatorname{pgcd}(1071, 462), l’exemple classique de l’article de Wikipédia en anglais.

  1. 1071=2×462+1471071 = 2 \times 462 + 147 : le reste est 147, donc pgcd(1071,462)=pgcd(462,147)\operatorname{pgcd}(1071, 462) = \operatorname{pgcd}(462, 147).
  2. 462=3×147+21462 = 3 \times 147 + 21 : pgcd(462,147)=pgcd(147,21)\operatorname{pgcd}(462, 147) = \operatorname{pgcd}(147, 21).
  3. 147=7×21+0147 = 7 \times 21 + 0 : le reste est nul, donc pgcd(147,21)=pgcd(21,0)=21\operatorname{pgcd}(147, 21) = \operatorname{pgcd}(21, 0) = 21.

Le PGCD vaut 21. Vérification : 1071=21×511071 = 21 \times 51 et 462=21×22462 = 21 \times 22, et 51 et 22 n’ont aucun diviseur commun autre que 1. On en déduit la fraction irréductible 4621071=2251\frac{462}{1071} = \frac{22}{51}.

En remontant les calculs (algorithme d’Euclide étendu), on écrit le PGCD comme combinaison des deux nombres : 21=462−3×147=462−3×(1071−2×462)=7×462−3×107121 = 462 - 3 \times 147 = 462 - 3 \times (1071 - 2 \times 462) = 7 \times 462 - 3 \times 1071. En effet 7×462=32347 \times 462 = 3\,234 et 3×1071=32133 \times 1071 = 3\,213. C’est l’identité de Bézout, utile pour résoudre les équations ax+by=cax + by = c en nombres entiers.

Pourquoi c’est vrai

Écrivons a=qb+ra = qb + r. Si un entier dd divise aa et bb, il divise a−qb=ra - qb = r ; il divise donc bb et rr. Inversement, si dd divise bb et rr, il divise qb+r=aqb + r = a ; il divise donc aa et bb. Les couples (a,b)(a, b) et (b,r)(b, r) ont ainsi exactement les mêmes diviseurs communs, donc le même plus grand diviseur commun.

L’algorithme s’arrête toujours, car les restes forment une suite d’entiers positifs strictement décroissante : b>r1>r2>⋯≥0b > r_1 > r_2 > \cdots \geq 0. Une telle suite ne peut pas descendre indéfiniment, elle atteint 00 en au plus bb étapes. En réalité, il en faut beaucoup moins : Gabriel Lamé a démontré en 1844 que le nombre de divisions ne dépasse jamais cinq fois le nombre de chiffres du plus petit des deux nombres. Le cas le plus lent est celui de deux termes consécutifs de la suite de Fibonacci, où tous les quotients valent 1 sauf le dernier : pgcd(89,55)\operatorname{pgcd}(89, 55) demande 9 divisions pour aboutir à 1.

Les programmes de l’atelier vérifient l’égalité en comparant les listes complètes de diviseurs communs de (a,b)(a, b) et de (b,amodb)(b, a \bmod b) sur 3 000 couples, comparent le résultat de l’algorithme au plus grand diviseur commun cherché un par un sur 20 000 couples, contrôlent l’identité de Bézout sur 2 000 couples d’entiers de 60 chiffres au plus, et la borne de Lamé sur 100 000 couples d’entiers jusqu’à un milliard.

Un peu d’histoire

L’algorithme figure dans les Éléments d’Euclide, vers 300 avant notre ère : au livre VII, propositions 1 et 2, pour les nombres entiers, et au livre X, propositions 2 et 3, pour les longueurs. Euclide le présente par soustractions successives : on retire le plus petit nombre du plus grand tant que c’est possible, ce qui revient à une division euclidienne. Il n’en est probablement pas l’inventeur ; les historiens pensent qu’il était connu avant lui, peut-être d’Eudoxe de Cnide.

Il a été redécouvert ailleurs : en Inde, Aryabhata le décrit à la fin du Ve siècle pour résoudre des équations en nombres entiers, sous le nom de « pulvérisateur ». En Europe, Claude-Gaspard Bachet de Méziriac le présente sous forme numérique dans la seconde édition de ses Problèmes plaisants et délectables (1624). L’analyse de sa rapidité par Lamé, en 1844, est souvent citée comme l’un des premiers résultats de la théorie de la complexité des algorithmes. Il est encore utilisé chaque jour, par exemple en cryptographie, et il est souvent présenté comme l’un des plus anciens algorithmes toujours en usage.

Ce que montre l’affiche

Le dessin est la version géométrique de l’algorithme : un rectangle de 1071×4621071 \times 462 est rempli de carrés aussi grands que possible. On y place d’abord 2 carrés de côté 462, puis, dans la bande restante, 3 carrés de côté 147, puis 7 carrés de côté 21 qui remplissent exactement le dernier morceau. Les nombres de carrés sont les quotients 2, 3 et 7, et le côté des plus petits carrés est le PGCD, 21 ; sous le rectangle, les trois divisions sont écrites, chacune précédée d’un carré de la couleur de son étape. Le pavage est calculé par le programme de l’atelier, et l’affiche existe en quatre styles : Papier, Nuit, Bauhaus et Tableau noir.

Pour aller plus loin

Sources : Algorithme d’Euclide (Wikipédia) (nouvel onglet), Euclidean algorithm (Wikipedia) (nouvel onglet), Euclidean Algorithm (MathWorld) (nouvel onglet), Euclide, Éléments, livre VII, proposition 2 (D. E. Joyce, Clark University) (nouvel onglet), Lamé’s theorem (Wikipedia) (nouvel onglet).

Vérifiée par le calcul

Les contrôles de cette formule

Avant d'imprimer l'affiche, un programme met la formule à l'épreuve. Voici ce qu'il a calculé (dernier passage le 11 octobre 2026) ; si un seul de ces contrôles échouait, l'affiche ne serait pas produite. Notre méthode

  • le résultat de l’algorithme est le plus grand diviseur commun, cherché un par un (20 000 couples jusqu’à 3 000)
  • (a, b) et (b, a mod b) ont les mêmes diviseurs communs (3 000 couples, liste complète des diviseurs)
  • 2 000 couples de grands entiers (jusqu’à 60 chiffres) : d divise a et b, a/d et b/d sont premiers entre eux, et ua + vb = d (Bézout)
  • 100 000 couples jusqu’à 10⁹ : chaque reste est plus petit que le diviseur, et le nombre de divisions ne dépasse jamais 5 fois le nombre de chiffres du plus petit (Lamé, 1844)rapport maximal observé 3.50
  • pire cas : pgcd(F(n+1), F(n)) = 1 en n − 1 divisions (Fibonacci, n = 3 à 50), quotients tous égaux à 1 sauf le dernier
  • exemple : 1071 = 2 × 462 + 147 ; 462 = 3 × 147 + 21 ; 147 = 7 × 21 + 0 → pgcd = 21
  • dessin : 12 carrés (2 + 3 + 7, les quotients) d’aire totale 1071 × 462 ; le plus petit a pour côté 21
  • b ≠ 0 indispensable : a mod 0 n’est pas défini (d’où l’arrêt sur pgcd(a, 0) = a)
  • le reste, pas le quotient : pgcd(462, 2) = 2 ≠ 21

Sources

Questions fréquentes

Comment calculer un PGCD avec l’algorithme d’Euclide ?

On divise le plus grand nombre par le plus petit, puis on recommence avec le diviseur et le reste, jusqu’à obtenir un reste nul. Le PGCD est le dernier reste non nul : pour 1071 et 462, on trouve 21.

Que vaut le PGCD de a et 0 ?

Pour a≥1a \geq 1, pgcd(a,0)=a\operatorname{pgcd}(a, 0) = a, car tout entier divise 0. C’est ce qui arrête l’algorithme ; le cas pgcd(0,0)\operatorname{pgcd}(0, 0) est laissé de côté ou fixé à 0 par convention.

À quoi sert l’algorithme d’Euclide ?

À simplifier des fractions, à savoir si deux nombres sont premiers entre eux et, dans sa version étendue, à trouver des entiers uu et vv tels que ua+vb=pgcd(a,b)ua + vb = \operatorname{pgcd}(a, b), ce qu’on utilise notamment en cryptographie.

Quelle différence entre la méthode par soustractions et celle par divisions ?

Euclide soustrayait le plus petit nombre du plus grand, autant de fois que nécessaire ; une division euclidienne fait d’un coup toutes ces soustractions. Le résultat est le même, mais la version par divisions est beaucoup plus rapide.

L’algorithme d’Euclide est-il rapide ?

Oui : d’après le théorème de Lamé (1844), le nombre de divisions ne dépasse jamais cinq fois le nombre de chiffres du plus petit nombre. Pour deux nombres de 9 chiffres, il faut donc au plus 45 divisions.