En arithmétique et en programmation informatique , l' algorithme d'Euclide étendu est une extension de l' algorithme d'Euclide et calcule, en plus du plus grand commun diviseur (PGCD) des entiers a et b , les coefficients de l'identité de Bézout , qui sont des entiers x et y tels que
Il s'agit d'un algorithme de certification , car le PGCD est le seul nombre qui puisse simultanément satisfaire cette équation et diviser les entrées. Il permet également de calculer, à un coût presque nul, les quotients de a et b par leur plus grand commun diviseur.
algorithme très similaire pour calculer le plus grand commun diviseur polynomial et les coefficients de l'identité de Bézout de deux polynômes univariés .
L'algorithme d'Euclide étendu est particulièrement utile lorsque a et b sont premiers entre eux . Sous cette condition, x est l' inverse multiplicatif modulaire de a modulo b , et y est l'inverse multiplicatif modulaire de b modulo a . De même, l'algorithme d'Euclide étendu polynomial permet de calculer l' inverse multiplicatif dans les extensions de corps algébriques et, en particulier, dans les corps finis d'ordre non premier. Il s'ensuit que ces deux algorithmes d'Euclide étendus sont largement utilisés en cryptographie . En particulier, le calcul de l' inverse multiplicatif modulaire est une étape essentielle de la génération des paires de clés dans la méthode de chiffrement à clé publique RSA .
Description
L'algorithme d'Euclide standard procède par une succession de divisions euclidiennes dont les quotients ne sont pas utilisés. Seuls les restes sont conservés. Pour l'algorithme étendu, les quotients successifs sont utilisés. Plus précisément, l'algorithme d'Euclide standard, avec a et b comme entrées, consiste à calculer une séquence
La principale propriété de la division euclidienne est que les inégalités à droite définissent de manière unique
Le calcul s'arrête lorsqu'on atteint un reste
L'algorithme euclidien étendu procède de manière similaire, mais ajoute deux autres séquences, comme suit
Le calcul s'arrête également lorsque
- Les coefficients de Bézout sont
- Les quotients de a et b par leur plus grand commun diviseur sont donnés par
De plus, si a et b sont tous deux positifs et
pour
Cela implique que la paire de coefficients de Bézout fournie par l'algorithme euclidien étendu est la paire minimale de coefficients de Bézout, car il s'agit de la seule paire satisfaisant les deux inégalités ci-dessus.
Cela signifie également que si a et b tiennent dans un type de données entier non signé , un programme informatique peut calculer les coefficients de Bézout dans le type entier signé correspondant sans dépassement d'entier .
Exemples
Le tableau suivant illustre le déroulement de l'algorithme d'Euclide étendu avec les entrées et Le plus grand commun diviseur (PGCD) est la dernière valeur non nulle, soit dans la colonne « reste ». Le calcul s'arrête à la ligne 6, car le reste y est . Les coefficients de Bézout apparaissent dans les deux dernières colonnes de l'avant-dernière ligne. En effet, on vérifie aisément que × 240 + 47 × 46 = 2. Enfin, les deux dernières valeurs, et , de la dernière ligne correspondent, au signe près, aux quotients des entrées et par le PGCD .
L'exemple suivant utilise une notation plus compacte. Le plus grand commun diviseur de
où

En appliquant les additions de multiples indiquées en vert de manière analogue aux équations, en commençant par
Preuve
Depuis
À partir de l'équation
Les relations de récurrence, pour
peut être démontré par induction. En fait, pour
En supposant qu'ils soient satisfaits pour certains
En particulier, l'équation
Multiplication
Donc,
Pour prouver la dernière assertion, supposons que
On peut constater que
Ceci, accompagné du fait que
Algorithme d'Euclide étendu polynomial
Pseudocode
Simplification des fractions
Une fraction / b est sous forme simplifiée canonique si et sont premiers entre eux et si positif. Cette forme simplifiée canonique peut être obtenue en remplaçant les trois lignes de sortie du pseudo-code précédent par
Si , afficher « Division par zéro » . Si s t pour éviter les dénominateurs négatifs ). s , alors afficher ( pour éviter les dénominateurs égaux à 1) Afficher La démonstration de cet algorithme repose sur le fait que et sont deux entiers premiers entre eux tels que , et donc
Si divise sans reste, l'algorithme n'effectue qu'une seule itération et à la fin. C'est le seul cas où le résultat est un entier.
Calcul des inverses multiplicatifs dans les structures modulaires
L'algorithme d'Euclide étendu est l'outil essentiel pour le calcul des inverses multiplicatifs dans les structures modulaires, notamment les entiers modulaires et les extensions de corps algébriques . Les corps finis d'ordre non premier en sont un exemple notable.
Entiers modulaires
L'identité de Bézout affirme que et sont premiers entre eux si et seulement s'il existe des entiers et tels que
La réduction de cette identité modulo donne
Ainsi , , ou plus exactement, le reste de la division de par , est l'inverse multiplicatif de modulo .
Pour adapter l'algorithme d'Euclide étendu à ce problème, il convient de noter que le coefficient de Bézout de n'est pas nécessaire et n'a donc pas besoin d'être calculé. De plus, pour obtenir un résultat positif et inférieur à n , on peut utiliser le fait que l'entier fourni par l'algorithme satisfait . Autrement dit, si , il faut lui ajouter à la fin (un exemple est disponible dans l'article « Inverse multiplicatif modulaire »). On obtient ainsi le pseudocode suivant, où n est un entier supérieur à 1.
fonction inverse(a, n) t := 0; newt := 1 r := n; nouveaur := a while newr ≠ 0 do quotient := r div newr (t, triton) := (triton, t − quotient × triton) (r, nouveau) := (nouveau, r − quotient × nouveau) si r > 1 alors retourner « a n'est pas inversible » si t < 0 alors t := t + n retourner t
Extensions de corps algébriques simples
L'algorithme d'Euclide étendu est également l'outil principal pour le calcul des inverses multiplicatifs dans les extensions algébriques simples de corps . Un cas important, largement utilisé en cryptographie et en théorie du codage , est celui des corps finis d'ordre non premier. En effet, si est un nombre premier et , le corps d'ordre est une extension algébrique simple du corps premier à éléments, engendrée par une racine d'un polynôme irréductible de degré .
Une extension algébrique simple d'un corps , engendrée par la racine d'un polynôme irréductible de degré peut être identifiée à l' anneau quotient.
L'algorithme est très similaire à celui présenté précédemment pour le calcul de l'inverse multiplicatif modulaire. Deux différences principales subsistent : premièrement, l'avant-dernière ligne est inutile, car le coefficient de Bézout fourni est toujours de degré inférieur à . Deuxièmement, le plus grand commun diviseur fourni, lorsque les polynômes d'entrée sont premiers entre eux, peut être n'importe quel élément non nul de ; ce coefficient de Bézout (un polynôme généralement de degré positif) doit donc être multiplié par l'inverse de cet élément de Dans le pseudocode qui suit, est un polynôme de degré supérieur à un, et est un polynôme.
fonction inverse(a, p) t := 0; newt := 1 r := p; nouveaur := a while newr ≠ 0 do quotient := r div newr (r, nouveau) := (nouveau, r − quotient × nouveau) (t, triton) := (triton, t − quotient × triton) si degree(r) > 0 alors retourner "Soit p n'est pas irréductible, soit a est un multiple de p" retour (1/r) × t
Exemple
Par exemple, si le polynôme définissant le corps fini GF(2⁸ x⁴ + calcul corps d'ordre 2ⁿ, on a −z = z et z + z 0 pour tout élément z du corps . Puisque 1 est le seul élément non nul de GF(2), la modification de la dernière ligne du pseudocode est inutile.
Ainsi, l'inverse est , comme on peut le confirmer en multipliant les deux éléments ensemble et en prenant le reste par Pour le prouver, supposons que…
Donc si
Pour appliquer cette méthode à n nombres, on utilise l'induction.
les équations suivent directement.