Résolution de l'équation de Bézout : ax + by = PGCD(a,b)

Entrer les valeurs de a et b, puis cliquer sur "calculer" :
(a entier strictement positif, b entier positif ou nul)


a = b =


Le programme de calcul, écrit dans le langage JavaScript (en rouge, des commentaires) :

 

function bezout(a,b){

r[0] = a; r[1] = b; // Les deux premiers "restes" sont a et b
n = 2; // n est un "compteur". Le prochain reste à calculer est le reste numéro 2.
while (r[n-1] > 0) { // Cela annonce le début d'une "boucle"
// tant que le dernier reste calculé n'est pas nul, on effectue des divisions
  q[n] = Math.floor(r[n-2]/r[n-1]); // le quotient de r[n-2] par r[n-1]
  r[n] = (r[n-2] - q[n]*r[n-1]); // le reste de r[n-2] par r[n-1]
  n = n + 1; // On vient d'effectuer une étape, on prépare la suivante et on revient ensuite au début de la boucle "while (r[n-1] > 0)"
};
// ici r[n-1] = 0
pgcd = r[n-2]; // le dernier reste non nul
nMax = n; // On mémorise le nombre d'étapes (pour l'affichage)
x[n] = 1; y[n] = 0; // On a x[n]*r[n-2] + y[n]*r[n-1] = pgcd
while (n > 2) { // Début de la boucle de remontée (tant que n est > 2)
  n = n - 1 // On remonte d'un rang
  x[n] = y[n+1]; y[n] = x[n+1] - y[n+1]*q[n];
  // On a x[n]*r[n-2] + y[n]*r[n-1] = pgcd
  // On revient ensuite au début de la boucle " while (n > 2)"
  };
// Ici n = 2 et la solution est x[2]*r[0] + y[2]*r[1] = pgcd

}

Le fonctionnement de cette page Web demande en fait d'introduire d'autres sous-programmes qui gèrent l'affichage, mais ils ne sont pas montrés ici.