PGCD, Bézout et Gauss

Démontrer Bézout et Gauss, calculer les inverses modulaires et résoudre les équations diophantiennes.

Télécharger le PDF
Un mot d’encouragement, si tu en as besoin

Tu peux avancer à ton rythme. Une difficulté ne définit pas ce dont tu es capable.

Trouver du soutien
Avant de commencer5 questions pour vérifier tes bases
1. 17 ≡ 2 modulo 5 signifie que…
2. Le reste de −17 dans la division euclidienne par 5 est…
3. Si d divise a et b, alors d divise nécessairement…
4. De 2x ≡ 2 modulo 6, peut-on conclure x ≡ 1 modulo 6 ?
5. Dire que 3 divise 12 signifie…

Pourquoi ce chapitre ?

Le problème fondamental : quels nombres peut-on fabriquer ?

Avec des combinaisons entières de 6 et 10, tu peux fabriquer \(4=10-6\) et \(2=2\times6-10\), mais jamais 3 : chaque combinaison est paire. Le PGCD va préciser cette obstruction. Bézout montrera ensuite qu'elle est la seule obstruction pour une équation \(ax+by=c\) dans les entiers.

Prérequis. Divisibilité, combinaison linéaire entière, division euclidienne et congruences de la fiche 4. Pour les divisions de l'algorithme, les restes sont positifs ou nuls.

Ces notions appartiennent au socle. Le PPCM et le théorème chinois final sont des prolongements construits à partir de Bézout et Gauss.

L'idée avant la formule

Pourquoi remplacer une paire par une autre ?

Les diviseurs communs de 84 et 30 divisent aussi \(84-2\times30=24\). Inversement, ceux de 30 et 24 divisent \(2\times30+24=84\). Les paires \((84,30)\) et \((30,24)\) ont donc exactement les mêmes diviseurs communs. La seconde paire est plus petite : on a progressé sans perdre l'information cherchée.

Le calcul peut se lire dans les deux sens

Les divisions suivantes conduisent à \(30=24+6\), puis \(24=4\times6\). Le PGCD est 6. Relis maintenant à l'envers :

\[\begin{aligned}6 &= 30-24\\[.35em] &= 30-(84-2\times30)\\[.35em] &= 3\times30-84.\end{aligned}\]

Cette égalité indique les coefficients qui fabriquent le PGCD. Les signes négatifs sont autorisés, puisque l'on travaille dans \(\Z\).

Une solution n'est pas toutes les solutions

Si \(3x+5y=1\), le couple \((2,-1)\) convient. En ajoutant 5 à x et en retirant 3 à y, la somme reste inchangée : on ajoute 15 puis on enlève 15. Le paramètre entier décrira ces déplacements. Gauss permettra de prouver qu'ils couvrent toutes les solutions, et pas seulement une famille commode.

Le cours formel

PGCD et entiers premiers entre eux

Deux entiers sont premiers entre eux lorsque leur PGCD vaut 1. Cela ne signifie pas qu'ils sont chacun premiers : 8 et 15 sont premiers entre eux bien que chacun soit composé.

Algorithme d'Euclide et invariant des diviseurs

La procédure s'arrête : les restes non nuls forment une suite strictement décroissante d'entiers naturels. À la dernière étape, le PGCD de \((r,0)\) vaut \(r\) ; l'invariance prouve que c'est le PGCD initial.

Remonter Euclide et démontrer Bézout

Le théorème de Gauss

Inverses et congruences linéaires

Pour \(6x\equiv9\pmod{15}\), le PGCD des deux coefficients 6 et 15 vaut 3, et il divise 9. Diviser l'égalité entière \(6x-15k=9\) par 3 donne \(2x-5k=3\), soit \(2x\equiv3\pmod5\). L'inverse de 2 modulo 5 est 3, car \(2\times3=6\equiv1\). Multiplier par 3 donne \(x\equiv9\equiv4\pmod5\), donc \(x=4+5t\). Dans l'intervalle \(0\le x<15\), les valeurs de \(t\) sont 0,1,2 : les restes sont \(4,9,14\). Les produits par 6 valent 24,54,84, tous de reste 9 modulo 15.

Équations diophantiennes : toutes les solutions

Si un coefficient est nul, traite l'équation directement. Par exemple \(0x+by=c\) impose \(y=c/b\) entier, puis \(x\) est libre. Si les deux coefficients sont nuls, tout couple convient pour \(c=0\), aucun sinon.

Euclide étendu et PPCM

def bezout(a, b):
    r0, r1 = abs(a), abs(b)
    u0, u1, v0, v1 = 1, 0, 0, 1
    while r1 != 0:
        q = r0 // r1
        r0, r1 = r1, r0 - q*r1
        u0, u1 = u1, u0 - q*u1
        v0, v1 = v1, v0 - q*v1
    return r0, u0*(1 if a >= 0 else -1), v0*(1 if b >= 0 else -1)

Au départ,

\[\begin{aligned}r_0 &= |a|\\[.35em] &= |a|\times1+|b|\times0\end{aligned}\]
\[\begin{aligned}\text{et }r_1 &= |b|\\[.35em] &= |a|\times0+|b|\times1.\end{aligned}\]

Les deux restes sont donc accompagnés de coefficients qui permettent de les reconstruire à partir des entrées.

Supposons ces deux identités vraies avant un tour. Le nouveau reste est \(r_0-qr_1\). En remplaçant chaque reste par sa combinaison, il devient \(|a|(u_0-qu_1)+|b|(v_0-qv_1)\). Voilà pourquoi on effectue sur les coefficients exactement la même soustraction que sur les restes. L'ancien reste \(r_1\) et ses coefficients deviennent la première ligne ; le nouveau reste et ses coefficients deviennent la seconde. Python évalue les membres droits avant les affectations, ce qui conserve les anciennes valeurs pendant le calcul.

Les restes positifs diminuent strictement, donc la boucle s'arrête. À l'arrêt, \(r_1=0\) et \(r_0=d\), le PGCD. On a \(d=|a|u_0+|b|v_0\). Si \(a<0\), remplacer \(u_0\) par \(-u_0\) transforme \(|a|u_0\) en \(a(-u_0)\) ; on fait de même pour \(b\). Les signes dans le retour assurent donc \(au+bv=d\) pour les entrées signées. Si les deux entrées sont nulles, la boucle est ignorée et le retour respecte la convention \(d=0\).

Posons \(d=\gcd(a,b)\), \(a=da'\) et \(b=db'\). Le cours a prouvé que \(a',b'\) sont premiers entre eux. Le nombre \(M=da'b'\) est positif ; il vaut \(ab'\) et aussi \(ba'\), donc est multiple de \(a\) et de \(b\).

Prenons maintenant un multiple commun positif \(m\). Comme \(a\mid m\), écrivons \(m=da'k\). Comme \(b\mid m\), il existe aussi \(\ell\) tel que \(m=db'\ell\). Diviser l'égalité \(da'k=db'\ell\) par \(d>0\) donne \(a'k=b'\ell\), donc \(b'\mid a'k\). Gauss s'applique puisque \(\gcd(a',b')=1\) : \(b'\mid k\). Écrivons \(k=b't\). Alors

\[\begin{aligned}m &= da'b't\\[.35em] &= Mt.\end{aligned}\]

Le nombre \(t\) est un entier positif puisque \(m,M>0\), donc \(t\ge1\) et \(m\ge M\). Ainsi \(M\) est lui-même un multiple commun et aucun multiple commun positif n'est plus petit. Enfin

\[\begin{aligned}ab/d &= (da')(db')/d\\[.35em] &= da'b'\\[.35em] &= M,\end{aligned}\]

ce qui prouve la formule.

Boîte à outils : rendre la solution exhaustive

Trouver tous les couples et imposer une contrainte

Une congruence avec plusieurs classes

Pour \(12x\equiv18\pmod{30}\), le PGCD vaut 6. Comme 6 divise 18, la réduction donne \(2x\equiv3\pmod5\). L'inverse de 2 modulo 5 est 3 : \(x\equiv4\pmod5\). Entre 0 et 29, les solutions sont 4,9,14,19,24,29 : six classes, exactement le PGCD initial.

Pour \(12x\equiv17\pmod{30}\), la condition d'existence échoue puisque 6 ne divise pas 17. Il ne faut pas poursuivre une recherche d'inverse qui ne peut pas résoudre cette équation.

Une méthode pour inverser de grands coefficients

PGCD d'une famille : ne pas s'arrêter aux possibilités

Une combinaison peut montrer qu'un PGCD divise une constante sans déterminer sa valeur. Pour \(d=\gcd(n+1,3n-1)\), la combinaison \(3(n+1)-(3n-1)=4\) impose \(d\mid4\). Mieux, l'invariance des diviseurs donne \(d=\gcd(n+1,4)\). Ainsi d=1 si n est pair, d=2 si \(n\equiv1\pmod4\), et d=4 si \(n\equiv3\pmod4\). Il faut distinguer les cas pour donner une réponse complète.

Faire le point par une variante autonome

Essaie cette variante sans relire le corrigé précédent. Explique le choix de ta méthode, puis utilise les contrôles pour décider quelle notion retravailler.

Fiche-mémoire

  • Euclide : \(\gcd(a,b)=\gcd(b,r)\) ; le dernier reste non nul est le PGCD.

  • Bézout : \(au+bv=d\) ; une combinaison égale à 1 caractérise les entiers premiers entre eux.

  • Gauss : \(a\mid bc\) et \(\gcd(a,b)=1\) impliquent \(a\mid c\).

  • a est inversible modulo n exactement si \(\gcd(a,n)=1\).

  • \(ax+by=c\) est soluble exactement si \(d\mid c\) ; les solutions s'obtiennent par un paramètre entier.

  • Pour \(ax\equiv b\pmod n\), divise les trois termes par le PGCD lorsque celui-ci divise b.

Contrôle. Ai-je vérifié une identité de Bézout ? La coprimalité exigée par Gauss est-elle établie ? Mon paramètre est-il entier ? Ai-je imposé les éventuelles contraintes de positivité à la fin ?