A×U + B×V = PGCD(A, B)
En effet, si on note A0 etB0 les valeurs de A et de B du début on a :
A | = A0×U + B0×V avec U = 1 et V = 0 | ||
B | = A0×W + B0×X avec W = 0 et X = 1 |
Puis on fait évoluer
A, B, U, V, W, X de façon à ce que ces
deux relations soient toujours vérifiées. Voici comment
A, B, U, V, W, X évoluent :
- on pose :
A = B×Q + R 0 R < B (R = A mod B et Q = E(A/B))
- on écrit alors :
R = A - B×Q = A0×(U - W×Q) + B0×(V - X×Q) = A0×S + B0×T | |||
avec S = U - W×Q et T = V - X×Q |
fonction Bezout(A,B) local U,V,W,X,S,T,Q,R 1->U 0->V 0->W 1->Xtantque B
A mod B->R E(A/B)->Q //R=A-B*Q U-W*Q->S V-X*Q->T B->A W->U X->V R->B S->W T->X ftantque retourne {U, V, A} ffonction