Maths Experte Arithmétique congruencesmoduloinverse modulairetests de divisibilitéFermatchiffrement affinearithmétique modulaire

Congruences

Résumé de cours, théorèmes et méthodes : congruences dans ℤ et compatibilité avec les opérations (démonstration), calcul de puissances modulo n, tests de divisibilité, inverse modulo n et résolution de ax ≡ b [n], petit théorème de Fermat, chiffrement affine et clés de contrôle.

Faire le quiz →

Définitions

Définition 1 — congruence modulo nn. Soit n∈N∗n \in \mathbb{N}^* et a,b∈Za, b \in \mathbb{Z}. On dit que aa est congru à bb modulo nn, et on note a≡b [n]a \equiv b \ [n] (ou a≡b(modn)a \equiv b \pmod n), si nn divise a−ba - b. Exemples : 17≡2 [5]17 \equiv 2 \ [5], −17≡3 [5]-17 \equiv 3 \ [5], −3≡2 [5]-3 \equiv 2 \ [5], 12≡2 [5]12 \equiv 2 \ [5]. La relation est réflexive (a≡aa \equiv a), symétrique (a≡b⇒b≡aa \equiv b \Rightarrow b \equiv a) et transitive (a≡ba \equiv b et b≡c⇒a≡cb \equiv c \Rightarrow a \equiv c).

Définition 2 — inverse modulo nn. Un entier aa est inversible modulo nn s’il existe un entier a′a' tel que aa′≡1 [n]aa' \equiv 1 \ [n] ; a′a' est un inverse de aa modulo nn. Exemple : modulo 7, 3×5=15≡13 \times 5 = 15 \equiv 1, donc 3−1≡53^{-1} \equiv 5 et 5−1≡35^{-1} \equiv 3.

Théorèmes et propriétés

Théorème 1 (congruence et restes). (démonstration exigible) a≡b [n]a \equiv b \ [n] si et seulement si aa et bb ont le même reste dans la division euclidienne par nn. En particulier, tout entier aa est congru modulo nn à un unique entier de {0,1,…,n−1}\{0, 1, \ldots, n - 1\} : son reste ; et a≡0 [n]  ⟺  n∣aa \equiv 0 \ [n] \iff n \mid a.

Démonstration : si a=nq+ra = nq + r et b=nq′+r′b = nq' + r' avec 0≤r,r′<n0 \leq r, r' < n, alors a−b=n(q−q′)+(r−r′)a - b = n(q - q') + (r - r') avec −n<r−r′<n-n < r - r' < n. Donc n∣a−b  ⟺  n∣r−r′  ⟺  r=r′n \mid a - b \iff n \mid r - r' \iff r = r'.

Théorème 2 (compatibilité avec les opérations). (démonstration exigible) Si a≡b [n]a \equiv b \ [n] et c≡d [n]c \equiv d \ [n], alors :

a+c≡b+d [n]a−c≡b−d [n]ac≡bd [n]ak≡bk [n] (k∈N)a + c \equiv b + d \ [n] \qquad a - c \equiv b - d \ [n] \qquad ac \equiv bd \ [n] \qquad a^k \equiv b^k \ [n] \ (k \in \mathbb{N})

Démonstration : n∣a−bn \mid a - b et n∣c−dn \mid c - d donnent n∣(a+c)−(b+d)=(a−b)+(c−d)n \mid (a + c) - (b + d) = (a - b) + (c - d) et n∣ac−bd=a(c−d)+d(a−b)n \mid ac - bd = a(c - d) + d(a - b) (combinaisons linéaires). Les puissances s’obtiennent par récurrence à partir du produit : si ak≡bka^k \equiv b^k, alors ak+1=ak⋅a≡bk⋅b=bk+1a^{k+1} = a^k \cdot a \equiv b^k \cdot b = b^{k+1}.

Attention : pas de division. 2×3≡2×0 [6]2 \times 3 \equiv 2 \times 0 \ [6] mais 3≢0 [6]3 \not\equiv 0 \ [6]. On ne peut simplifier ac≡bc [n]ac \equiv bc \ [n] par cc que si PGCD(c,n)=1\text{PGCD}(c, n) = 1 : en effet n∣c(a−b)n \mid c(a - b) et nn premier avec cc donnent n∣a−bn \mid a - b par le théorème de Gauss (chapitre PGCD).

Théorème 3 (tests de divisibilité). Soit NN un entier d’écriture décimale ck…c1c0‾\overline{c_k \ldots c_1 c_0}, c’est-à-dire N=∑i=0kci10iN = \sum_{i=0}^{k} c_i 10^i.

  • Par 9 et par 3 : 10≡1 [9]10 \equiv 1 \ [9], donc N≡c0+c1+⋯+ck [9]N \equiv c_0 + c_1 + \cdots + c_k \ [9] (et de même modulo 3) : NN est divisible par 9 (resp. 3) si et seulement si la somme de ses chiffres l’est.
  • Par 11 : 10≡−1 [11]10 \equiv -1 \ [11], donc N≡c0−c1+c2−⋯ [11]N \equiv c_0 - c_1 + c_2 - \cdots \ [11] (somme alternée des chiffres).
  • Par 4 et par 25 : 100≡0 [4]100 \equiv 0 \ [4], donc N≡c1c0‾ [4]N \equiv \overline{c_1 c_0} \ [4] (les deux derniers chiffres suffisent) ; par 8 : les trois derniers.
  • Par 2 et par 5 : 10≡010 \equiv 0, donc N≡c0N \equiv c_0.

Exemples : 123456≡1+2+3+4+5+6=21≡3 [9]123456 \equiv 1 + 2 + 3 + 4 + 5 + 6 = 21 \equiv 3 \ [9] ; 918082≡2−8+0−8+1−9=−22≡0 [11]918082 \equiv 2 - 8 + 0 - 8 + 1 - 9 = -22 \equiv 0 \ [11] ; 2024≡24≡0 [4]2024 \equiv 24 \equiv 0 \ [4]. En base 7, 7≡1 [6]7 \equiv 1 \ [6] : un nombre écrit en base 7 est divisible par 6 si et seulement si la somme de ses chiffres l’est.

Théorème 4 (inversibilité modulo nn). aa est inversible modulo nn si et seulement si PGCD(a,n)=1\text{PGCD}(a, n) = 1. L’inverse est alors unique modulo nn.

Démonstration : si aa′≡1 [n]aa' \equiv 1 \ [n], alors aa′−1=nkaa' - 1 = nk, soit aa′+n(−k)=1aa' + n(-k) = 1 : par le théorème de Bézout, aa et nn sont premiers entre eux. Réciproquement, si PGCD(a,n)=1\text{PGCD}(a, n) = 1, Bézout donne au+nv=1au + nv = 1, d’où au≡1 [n]au \equiv 1 \ [n] : uu est un inverse. Unicité : si aa′≡aa′′≡1aa' \equiv aa'' \equiv 1, alors a′≡a′(aa′′)=(a′a)a′′≡a′′ [n]a' \equiv a'(aa'') = (a'a)a'' \equiv a'' \ [n].

Exemples : modulo 26, 5×21=105=4×26+15 \times 21 = 105 = 4 \times 26 + 1, donc 5−1≡215^{-1} \equiv 21. Le nombre 4 n’est pas inversible modulo 10 car PGCD(4,10)=2\text{PGCD}(4, 10) = 2.

Théorème 5 (petit théorème de Fermat) (admis ici ; la démonstration figure au chapitre Nombres premiers). Soit pp un nombre premier.

  • Si aa est un entier non divisible par pp, alors ap−1≡1 [p]a^{p-1} \equiv 1 \ [p].
  • Pour tout entier aa, ap≡a [p]a^p \equiv a \ [p].

Les deux énoncés sont équivalents : le second s’obtient en multipliant le premier par aa (et il est évident si p∣ap \mid a) ; réciproquement, si p∤ap \nmid a, on simplifie ap≡aa^p \equiv a par aa, premier avec pp.

Attention. L’hypothèse pp premier est essentielle : 23=8≡0≢1 [4]2^3 = 8 \equiv 0 \not\equiv 1 \ [4]. La réciproque est fausse : 2340≡1 [341]2^{340} \equiv 1 \ [341] alors que 341=11×31341 = 11 \times 31.

Exemple : n7−nn^7 - n est divisible par 7 pour tout entier nn ; on peut montrer qu’il est aussi divisible par 2 et 3, donc par 42.

Méthodes

Méthode 1 — calculer modulo nn en réduisant à chaque étape.

  1. Remplacer chaque nombre par son reste modulo nn, ou par un représentant commode comme −1-1 (Théorème 1).
  2. Effectuer les opérations sur ces petits représentants (Théorème 2).
  3. Réduire le résultat dans {0,…,n−1}\{0, \ldots, n - 1\} pour donner le reste.

Exemple : 2023×2024+20252≡0×1+22=4 [7]2023 \times 2024 + 2025^2 \equiv 0 \times 1 + 2^2 = 4 \ [7] car 2023=7×2892023 = 7 \times 289, 2024≡12024 \equiv 1 et 2025≡2 [7]2025 \equiv 2 \ [7].

Méthode 2 — raisonner par disjonction de cas.

  1. Modulo nn, il n’y a que nn cas : x≡0,1,…,n−1x \equiv 0, 1, \ldots, n - 1.
  2. Calculer l’expression étudiée dans chaque cas (Théorème 2).
  3. Conclure sur les valeurs possibles.

Exemple : restes de n2n^2 modulo 4 : si n≡0,1,2,3n \equiv 0, 1, 2, 3, alors n2≡0,1,0,1 [4]n^2 \equiv 0, 1, 0, 1 \ [4] : un carré est congru à 0 ou 1 modulo 4. Conséquence : un entier de la forme 4k+34k + 3 n’est jamais somme de deux carrés. Autre exemple : n3≡n [6]n^3 \equiv n \ [6] pour tout nn (on vérifie les six cas).

Méthode 3 — calculer une puissance aka^k modulo nn.

  1. Chercher un exposant mm tel que am≡1a^m \equiv 1 (ou −1-1) [n][n] : essais successifs, ou petit théorème de Fermat (Théorème 5) si nn est premier.
  2. Écrire la division euclidienne de l’exposant : k=mq+rk = mq + r.
  3. Conclure : ak=(am)q×ar≡ar [n]a^k = (a^m)^q \times a^r \equiv a^r \ [n] (Théorème 2), puis réduire ara^r.

Exemple : 31003^{100} modulo 7 : 36≡1 [7]3^6 \equiv 1 \ [7] et 100=6×16+4100 = 6 \times 16 + 4, donc 3100≡34=81≡4 [7]3^{100} \equiv 3^4 = 81 \equiv 4 \ [7]. Chiffre des unités de 72227^{222} : modulo 10, 72≡−17^2 \equiv -1 donc 74≡17^4 \equiv 1 ; 222=4×55+2222 = 4 \times 55 + 2, d’où 7222≡72≡9 [10]7^{222} \equiv 7^2 \equiv 9 \ [10].

def puissance_mod(a, k, n):
    """Reste de a**k modulo n, en reduisant a chaque etape."""
    r = 1
    for _ in range(k):
        r = (r * a) % n
    return r

print(puissance_mod(3, 100, 7))   # 4
print(pow(3, 100, 7))             # fonction native de Python : 4

Méthode 4 — trouver un inverse modulo nn.

  1. Vérifier que PGCD(a,n)=1\text{PGCD}(a, n) = 1 (Théorème 4), sinon il n’y a pas d’inverse.
  2. Pour un petit modulo : tester a×1,a×2,…a \times 1, a \times 2, \ldots jusqu’à trouver un produit congru à 1.
  3. Sinon : écrire une relation de Bézout au+nv=1au + nv = 1 (algorithme d’Euclide étendu, chapitre PGCD) ; alors a−1≡u [n]a^{-1} \equiv u \ [n].

Exemple : inverse de 5 modulo 26 : 5×21=105=4×26+15 \times 21 = 105 = 4 \times 26 + 1, donc 5−1≡21 [26]5^{-1} \equiv 21 \ [26]. Par Bézout : 5×21+26×(−4)=15 \times 21 + 26 \times (-4) = 1.

Méthode 5 — résoudre ax≡b [n]ax \equiv b \ [n].

  1. Calculer d=PGCD(a,n)d = \text{PGCD}(a, n).
  2. Si d=1d = 1 : multiplier par l’inverse a′a' de aa (Méthode 4) : x≡a′b [n]x \equiv a'b \ [n], unique solution modulo nn (Théorème 4).
  3. Si d>1d > 1 : si d∤bd \nmid b, aucune solution ; si d∣bd \mid b, diviser aa, bb et nn par dd, résoudre comme en 2, puis remonter modulo nn : il y a dd solutions modulo nn.

Exemple : 3x≡2 [7]3x \equiv 2 \ [7] : x≡5×2=10≡3 [7]x \equiv 5 \times 2 = 10 \equiv 3 \ [7]. 4x≡6 [10]4x \equiv 6 \ [10] : d=2∣6d = 2 \mid 6, donc 2x≡3 [5]2x \equiv 3 \ [5], x≡3×3≡4 [5]x \equiv 3 \times 3 \equiv 4 \ [5], soit x≡4x \equiv 4 ou 9 [10]9 \ [10]. 6x≡5 [9]6x \equiv 5 \ [9] : PGCD(6,9)=3∤5\text{PGCD}(6, 9) = 3 \nmid 5, aucune solution.

Méthode 6 — coder et décoder par chiffrement affine.

  1. Numéroter les lettres de 0 (A) à 25 (Z) ; choisir une clé (a,b)(a, b) avec PGCD(a,26)=1\text{PGCD}(a, 26) = 1 (condition qui garantit que deux lettres différentes ont des codes différents, Théorème 4). Coder : y≡ax+b [26]y \equiv ax + b \ [26].
  2. Pour décoder : calculer l’inverse a′a' de aa modulo 26 (Méthode 4), puis x≡a′(y−b) [26]x \equiv a'(y - b) \ [26].
  3. Réduire chaque résultat dans {0,…,25}\{0, \ldots, 25\} et revenir aux lettres.

Exemple : clé (5,3)(5, 3) : la lettre E (x=4x = 4) devient y≡23y \equiv 23, soit X. Comme 5×21≡1 [26]5 \times 21 \equiv 1 \ [26], le déchiffrement est x≡21(y−3) [26]x \equiv 21(y - 3) \ [26] : pour y=23y = 23, x≡21×20=420≡4x \equiv 21 \times 20 = 420 \equiv 4, on retrouve E. Le chiffrement de César est le cas a=1a = 1. Même principe pour les clés de contrôle : le numéro de sécurité sociale vérifie N+c≡0 [97]N + c \equiv 0 \ [97] et le code ISBN-10 ∑i=110i ci≡0 [11]\sum_{i=1}^{10} i\,c_i \equiv 0 \ [11] ; ces congruences détectent toute erreur sur un chiffre.

Quiz — Congruences

10 questions · correction immédiate · sans inscription

Tester →