Algorithme d'Euclide étendu



Ce calculateur applique l'algorithme d'Euclide pour calculer le PGCD. Il calcule aussi les coefficients de Bezout à l'aide de l'algorithme d'Euclide étendu.

Identité de Bezout

L'identité de Bezout (ou théorème de Bezout ou relation de Bezout ou encore lemme de Bezout) peut être définie comme suit:

Soient N et P, deux entiers non nuls ayant d comme plus grand commun diviseur, c'est à dire,

`PGCD ( N , P ) = d`

Alors, il existe 2 entiers u et v tels que,

`N*u + P*v = d`

Exemples de coefficients de Bezout

Exemple 1 : N = 65 et P = 39, alors u = -1 et v = 2 car,

`65 * (-1) + 39 * 2 = PGCD(65,39) = 13`

Exemple 2 : N = 195 et P = 154, alors u = -15 et v = 19 car,

`195 * (-15) + 154 * 19 = PGCD(195,154) = 1`

Comment trouver les coefficients de Bezout ?

Les coefficients de Bezout peuvent être calculés à l'aide de l'algorithme d'Euclide étendu.
Cet algorithme consiste à appliquer l'algorithme d'Euclide pour trouver le PGCD et ensuite de réécrire les équations en "repartant du bas". On reprend l'exemple 2 ci-dessus :

Soit N = 195 et P = 154. On calcule le PGCD selon l'algorithme d'Euclide :

`195 = (1) 154 + 41`
`154 = (3) 41 + 31`
`41 = (1) 31 + 10`
`31 = (3) 10 + 1`
`10 = (1) 10 + 0`

PGCD( 195 , 154 ) = 1 (dernier reste non nul)

On réécrit les équations (sauf la dernière avec reste nul) de manière à isoler le reste de la division euclidienne,

`41 = 195 - (1)154`
`31 = 154 - (3) 41`
`10 = 41 - (1) 31`
`1 = 31 - (3) 10`

On part de la dernière division et on remplace cette fois les quotients en utilisant la division "au dessus" et ainsi de suite :
On remplace 10,
`1 = 31 - (3) (41 - (1) 31) = (4) 31 - (3) 41`

On remplace 31,
`1 = (4) (154 - (3) 41) - (3) 41 = (4) 154 - (15) 41`

On remplace 41,
`1 = (4) 154 - (15) (195 - (1) 154) = (19) 154 -(15) 195`

On obtient bien le même résultat que ci-dessus à savoir,

u = -15 et v = 19

Quelques conséquences de l'identité de Bezout

- Soit N et P, deux entiers non nuls et d leur PGCD, alors les multiples de d s'écrivent N.x + P.y (x et y sont des entiers)

- Si N et P sont premiers entre eux alors il existe deux entiers u et v tels que N.u + P.v = 1

- Une conséquence de cette dernière propriété (en appliquant modulo N en aux deux membres) est la suivante,
Soit N et P, deux entiers non nuls, premiers entre eux alors, il existe un entier v tel que,
`P.v\equiv 1\mod N` (v est l'inverse modulaire de P modulo N)
Dit autrement, si N et P sont premiers entre eux alors l'inverse modulaire de P modulo N existe.
On peut d'ailleurs montrer l'inverse et conclure que si N et P sont premiers entre eux si et seulement si l'inverse modulaire de P modulo N existe.

Programmation

Python

Ce programme en python calcule les coefficients de l'identité de Bezout (algorithme d'Euclide étendu).

La fonction bezout(a , b) retourne un triplet ( u , v , pgcd(a,b) ) , u et v étant les coefficients de Bezout qui vérifient :
`a * u + b * v = pgcd (a , b)`

Cette fonction utilise la notion de récursivité, c'est à dire qu'elle s'appelle elle-même ( bezout( b , r ) ).


def bezout(a, b):
    if b == 0:
        return 1, 0, a
    else:
        q = a//b
        r = a%b
        x, y, g = bezout(b, r)
        return y, x - q * y, g

Voir aussi

PGCD
Division euclidienne
Inverse modulaire