Définitions
Définition 1 — congruence modulo n. Soit n∈N∗ et a,b∈Z. On dit que a est congru à b modulo n, et on note a≡b [n] (ou a≡b(modn)), si n divise a−b. Exemples : 17≡2 [5], −17≡3 [5], −3≡2 [5], 12≡2 [5]. La relation est réflexive (a≡a), symétrique (a≡b⇒b≡a) et transitive (a≡b et b≡c⇒a≡c).
Définition 2 — inverse modulo n. Un entier a est inversible modulo n s’il existe un entier a′ tel que aa′≡1 [n] ; a′ est un inverse de a modulo n. Exemple : modulo 7, 3×5=15≡1, donc 3−1≡5 et 5−1≡3.
Théorèmes et propriétés
Théorème 1 (congruence et restes). (démonstration exigible) a≡b [n] si et seulement si a et b ont le même reste dans la division euclidienne par n. En particulier, tout entier a est congru modulo n à un unique entier de {0,1,…,n−1} : son reste ; et a≡0 [n]⟺n∣a.
Démonstration : si a=nq+r et b=nq′+r′ avec 0≤r,r′<n, alors a−b=n(q−q′)+(r−r′) avec −n<r−r′<n. Donc n∣a−b⟺n∣r−r′⟺r=r′.
Théorème 2 (compatibilité avec les opérations). (démonstration exigible) Si a≡b [n] et c≡d [n], alors :
a+c≡b+d [n]a−c≡b−d [n]ac≡bd [n]ak≡bk [n] (k∈N)
Démonstration : n∣a−b et n∣c−d donnent n∣(a+c)−(b+d)=(a−b)+(c−d) et n∣ac−bd=a(c−d)+d(a−b) (combinaisons linéaires). Les puissances s’obtiennent par récurrence à partir du produit : si ak≡bk, alors ak+1=ak⋅a≡bk⋅b=bk+1.
Attention : pas de division. 2×3≡2×0 [6] mais 3≡0 [6]. On ne peut simplifier ac≡bc [n] par c que si PGCD(c,n)=1 : en effet n∣c(a−b) et n premier avec c donnent n∣a−b par le théorème de Gauss (chapitre PGCD).
Théorème 3 (tests de divisibilité). Soit N un entier d’écriture décimale ck…c1c0, c’est-à-dire N=∑i=0kci10i.
- Par 9 et par 3 : 10≡1 [9], donc N≡c0+c1+⋯+ck [9] (et de même modulo 3) : N est divisible par 9 (resp. 3) si et seulement si la somme de ses chiffres l’est.
- Par 11 : 10≡−1 [11], donc N≡c0−c1+c2−⋯ [11] (somme alternée des chiffres).
- Par 4 et par 25 : 100≡0 [4], donc N≡c1c0 [4] (les deux derniers chiffres suffisent) ; par 8 : les trois derniers.
- Par 2 et par 5 : 10≡0, donc N≡c0.
Exemples : 123456≡1+2+3+4+5+6=21≡3 [9] ; 918082≡2−8+0−8+1−9=−22≡0 [11] ; 2024≡24≡0 [4]. En base 7, 7≡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 n). a est inversible modulo n si et seulement si PGCD(a,n)=1. L’inverse est alors unique modulo n.
Démonstration : si aa′≡1 [n], alors aa′−1=nk, soit aa′+n(−k)=1 : par le théorème de Bézout, a et n sont premiers entre eux. Réciproquement, si PGCD(a,n)=1, Bézout donne au+nv=1, d’où au≡1 [n] : u est un inverse. Unicité : si aa′≡aa′′≡1, alors a′≡a′(aa′′)=(a′a)a′′≡a′′ [n].
Exemples : modulo 26, 5×21=105=4×26+1, donc 5−1≡21. Le nombre 4 n’est pas inversible modulo 10 car 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 p un nombre premier.
- Si a est un entier non divisible par p, alors ap−1≡1 [p].
- Pour tout entier a, ap≡a [p].
Les deux énoncés sont équivalents : le second s’obtient en multipliant le premier par a (et il est évident si p∣a) ; réciproquement, si p∤a, on simplifie ap≡a par a, premier avec p.
Attention. L’hypothèse p premier est essentielle : 23=8≡0≡1 [4]. La réciproque est fausse : 2340≡1 [341] alors que 341=11×31.
Exemple : n7−n est divisible par 7 pour tout entier n ; on peut montrer qu’il est aussi divisible par 2 et 3, donc par 42.
Méthodes
Méthode 1 — calculer modulo n en réduisant à chaque étape.
- Remplacer chaque nombre par son reste modulo n, ou par un représentant commode comme −1 (Théorème 1).
- Effectuer les opérations sur ces petits représentants (Théorème 2).
- Réduire le résultat dans {0,…,n−1} pour donner le reste.
Exemple : 2023×2024+20252≡0×1+22=4 [7] car 2023=7×289, 2024≡1 et 2025≡2 [7].
Méthode 2 — raisonner par disjonction de cas.
- Modulo n, il n’y a que n cas : x≡0,1,…,n−1.
- Calculer l’expression étudiée dans chaque cas (Théorème 2).
- Conclure sur les valeurs possibles.
Exemple : restes de n2 modulo 4 : si n≡0,1,2,3, alors n2≡0,1,0,1 [4] : un carré est congru à 0 ou 1 modulo 4. Conséquence : un entier de la forme 4k+3 n’est jamais somme de deux carrés. Autre exemple : n3≡n [6] pour tout n (on vérifie les six cas).
Méthode 3 — calculer une puissance ak modulo n.
- Chercher un exposant m tel que am≡1 (ou −1) [n] : essais successifs, ou petit théorème de Fermat (Théorème 5) si n est premier.
- Écrire la division euclidienne de l’exposant : k=mq+r.
- Conclure : ak=(am)q×ar≡ar [n] (Théorème 2), puis réduire ar.
Exemple : 3100 modulo 7 : 36≡1 [7] et 100=6×16+4, donc 3100≡34=81≡4 [7]. Chiffre des unités de 7222 : modulo 10, 72≡−1 donc 74≡1 ; 222=4×55+2, d’où 7222≡72≡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 n.
- Vérifier que PGCD(a,n)=1 (Théorème 4), sinon il n’y a pas d’inverse.
- Pour un petit modulo : tester a×1,a×2,… jusqu’à trouver un produit congru à 1.
- Sinon : écrire une relation de Bézout au+nv=1 (algorithme d’Euclide étendu, chapitre PGCD) ; alors a−1≡u [n].
Exemple : inverse de 5 modulo 26 : 5×21=105=4×26+1, donc 5−1≡21 [26]. Par Bézout : 5×21+26×(−4)=1.
Méthode 5 — résoudre ax≡b [n].
- Calculer d=PGCD(a,n).
- Si d=1 : multiplier par l’inverse a′ de a (Méthode 4) : x≡a′b [n], unique solution modulo n (Théorème 4).
- Si d>1 : si d∤b, aucune solution ; si d∣b, diviser a, b et n par d, résoudre comme en 2, puis remonter modulo n : il y a d solutions modulo n.
Exemple : 3x≡2 [7] : x≡5×2=10≡3 [7]. 4x≡6 [10] : d=2∣6, donc 2x≡3 [5], x≡3×3≡4 [5], soit x≡4 ou 9 [10]. 6x≡5 [9] : PGCD(6,9)=3∤5, aucune solution.
Méthode 6 — coder et décoder par chiffrement affine.
- Numéroter les lettres de 0 (A) à 25 (Z) ; choisir une clé (a,b) avec 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].
- Pour décoder : calculer l’inverse a′ de a modulo 26 (Méthode 4), puis x≡a′(y−b) [26].
- Réduire chaque résultat dans {0,…,25} et revenir aux lettres.
Exemple : clé (5,3) : la lettre E (x=4) devient y≡23, soit X. Comme 5×21≡1 [26], le déchiffrement est x≡21(y−3) [26] : pour y=23, x≡21×20=420≡4, on retrouve E. Le chiffrement de César est le cas a=1. Même principe pour les clés de contrôle : le numéro de sécurité sociale vérifie N+c≡0 [97] et le code ISBN-10 ∑i=110ici≡0 [11] ; ces congruences détectent toute erreur sur un chiffre.