Mathématiques pour l'informatique 201-N11 • Cégep à Montréal

Fiche de révision : l'arithmétique modulaire (201-N11)

L'arithmétique modulaire n'est pas difficile à comprendre : c'est l'arithmétique de l'horloge. Elle est difficile à MANIPULER, parce que trois opérations sur quatre s'y comportent comme d'habitude et que la quatrième, la division, n'existe pas du tout.

Cette fiche est écrite pour les étudiants de cégep en techniques de l'informatique à Montréal et pour tous ceux qui abordent la cryptographie par les mathématiques. La série d'exercices corrigés du même chapitre met ensuite chaque réflexe à l'épreuve.

Marque ici la fiche comme lue ou mets-la en favori : un compte gratuit, sans mot de passe, retient tes fiches lues et tes favoris d'une visite à l'autre, te dit quel chapitre attaquer ensuite et te permet de demander la méthode ou l'exercice qui te manque. Crée ton espace, un courriel suffit.

Le fil du chapitre

Travailler modulo nn, c'est remplacer un entier par son reste et calculer sur les restes. L'addition et la multiplication passent sans problème; la DIVISION ne passe jamais, et c'est de là que viennent presque toutes les pertes de points.

Ce chapitre fait partie de Mathématiques pour l'informatique, 201-N11
Pour s'entraîner Les exercices corrigés de ce chapitre, 12 exercices

Avant ce chapitre

Cette fiche suppose ces notions acquises. Si une méthode ci-dessous reste opaque, c'est presque toujours l'une d'elles qui manque, pas la fiche.

L'essentiel

Division euclidienne : le reste est TOUJOURS positif

  • • Pour n>0n>0, il existe un unique couple (q ;r)(q\,;r) tel que a=nq+ra=nq+r avec 0≤r<n0\leq r<n.
  • • Cela vaut aussi pour a<0a<0 : −17=5×(−4)+3-17=5\times(-4)+3, donc −17 mod 5=3-17\bmod 5=3, et non −2-2.
  • • L'opérateur %\% des langages C, C++ et Java ne suit PAS cette convention et rend un reste du signe du dividende. Python, lui, la suit.
  • • Le quotient se lit comme la partie entière PAR DÉFAUT de an\frac{a}{n} : ⌊−175⌋=−4\left\lfloor\frac{-17}{5}\right\rfloor=-4, pas −3-3.
-25-20-15-10-505r = 3a = -17-20 = 5 x (-4)
La division euclidienne de −17-17 par 55 donne q=−4q=-4 et r=3r=3, jamais r=−2r=-2 : le reste se compte à partir du multiple situé À GAUCHE, donc il est toujours positif.

En examen, un reste négatif est une réponse fausse même quand la calculatrice l'affiche. Ajouter le module jusqu'à retomber dans [0 ;n−1][0\,;n-1] coûte cinq secondes.

Congruences : ce qui passe, et ce qui ne passe pas

  • • a≡b(modn)a\equiv b\pmod n signifie que nn divise a−ba-b, autrement dit que aa et bb ont le même reste.
  • • COMPATIBLE avec l'addition, la soustraction, la multiplication et donc les puissances : on réduit AVANT de calculer, jamais après.
  • • PAS compatible avec la division : ab(modn)\frac{a}{b}\pmod n n'a aucun sens en général.
  • • SIMPLIFICATION : de ac≡bc(modn)ac\equiv bc\pmod n on ne peut tirer a≡b(modn)a\equiv b\pmod n que si pgcd(c,n)=1\mathrm{pgcd}(c,n)=1. Sinon il faut diviser le module par pgcd(c,n)\mathrm{pgcd}(c,n).
01234−3, 2, 7, 12 : même reste 2
Modulo 55, la roue n'a que cinq positions : −3-3, 22, 77 et 1212 tombent au même endroit, ils sont congrus entre eux, de même reste 22.

Réduire avant de calculer est aussi ce qui rend les calculs faisables : 750 mod 137^{50}\bmod 13 se fait de tête en réduisant à chaque étape, et sature la calculatrice si l'on calcule 7507^{50} d'abord.

Euclide, Bézout, inverse : la même machine à trois usages

  • • EUCLIDE : pgcd(a,n)=pgcd(n,a mod n)\mathrm{pgcd}(a,n)=\mathrm{pgcd}(n,a\bmod n), répété jusqu'à un reste nul. Le nombre d'étapes est majoré par environ cinq fois le nombre de chiffres.
  • • BÉZOUT : il existe uu et vv tels que au+nv=pgcd(a,n)au+nv=\mathrm{pgcd}(a,n), obtenus en remontant l'algorithme d'Euclide ÉTENDU.
  • • INVERSE : aa est inversible modulo nn si et seulement si pgcd(a,n)=1\mathrm{pgcd}(a,n)=1, et l'inverse est alors le uu de Bézout, réduit dans [0 ;n−1][0\,;n-1].
  • • Tous les éléments non nuls sont inversibles SI ET SEULEMENT SI nn est premier. Sinon apparaissent des DIVISEURS DE ZÉRO, comme 2×3≡0(mod6)2\times 3\equiv 0\pmod 6.
18181266
L'algorithme d'Euclide pave le rectangle 48×1848\times 18 par des carrés : 48=2×18+1248=2\times 18+12, puis 18=1×12+618=1\times 12+6, puis 12=2×612=2\times 6. Le côté du dernier carré est le PGCD, ici 66.

Fermat, exponentiation rapide et équations de congruence

  • • FERMAT : si pp est PREMIER et ne divise pas aa, alors ap−1≡1(modp)a^{p-1}\equiv 1\pmod p.
  • • Conséquence pratique : on réduit la BASE modulo pp et l'EXPOSANT modulo p−1p-1. Deux modules différents, c'est le piège du chapitre.
  • • EXPONENTIATION RAPIDE : ae mod na^{e}\bmod n en environ 2log⁡2e2\log_{2}e multiplications, en élevant au carré et en réduisant à chaque étape.
  • • ÉQUATION ax≡b(modn)ax\equiv b\pmod n : elle admet des solutions si et seulement si d=pgcd(a,n)d=\mathrm{pgcd}(a,n) divise bb, et il y en a alors exactement dd modulo nn.
7 ≡ 77² ≡ 10au carré7⁴ ≡ 9au carré7⁸ ≡ 3au carrémodulo 13, réduit à chaque étape
Par carrés successifs, 787^{8} modulo 1313 demande trois multiplications, réduites à chaque étape : on ne manipule jamais un nombre plus grand que 12212^{2}.

Sur un module non premier, c'est le théorème d'Euler qui remplace Fermat, avec φ(n)\varphi(n) à la place de p−1p-1. Appliquer Fermat tel quel à un module composé est faux.

Les pièges qui coûtent des points

Les erreurs ci-dessous sont celles que je corrige le plus souvent en séance. Chacune coûte des points sur une copie, même quand le raisonnement est juste.

1. Rendre un reste négatif

1 point à chaque occurrence, et un chiffrement faux dans un problème RSA

Ce qu'il ne faut pas écrire

« −17 mod 5=−2-17\bmod 5=-2, c'est ce que ma calculatrice affiche. »

Ce qu'il faut écrire

« −17=5×(−4)+3-17=5\times(-4)+3, donc −17 mod 5=3-17\bmod 5=3 : le reste d'une division euclidienne appartient toujours à [0 ;n−1][0\,;n-1]. »

Pourquoi : L'opérateur %\% des langages de la famille C rend un reste du signe du dividende, ce qui n'est pas la définition mathématique. En Python et en mathématiques, le reste est positif.

2. Simplifier une congruence par un facteur non premier avec le module

toute la question

Ce qu'il ne faut pas écrire

« 4×2≡4×5(mod6)4\times 2\equiv 4\times 5\pmod 6, donc 2≡5(mod6)2\equiv 5\pmod 6. »

Ce qu'il faut écrire

« pgcd(4 ;6)=2≠1\mathrm{pgcd}(4\,;6)=2\neq 1 : on ne simplifie pas. On divise le MODULE par 22 et l'on obtient 2≡5(mod3)2\equiv 5\pmod 3, qui est vrai. »

Pourquoi : Modulo 66, 88 et 2020 ont bien le même reste 22, alors que 22 et 55 ne sont pas congrus : la simplification perd de l'information dès que le facteur partage un diviseur avec le module.

3. Diviser dans une congruence

1 point ici, toute la question dès que le résultat n'est pas entier

Ce qu'il ne faut pas écrire

« 3x≡6(mod7)3x\equiv 6\pmod 7, donc x≡63=2x\equiv\frac{6}{3}=2. »

Ce qu'il faut écrire

« On MULTIPLIE par l'inverse de 33 modulo 77, qui est 55 puisque 3×5=15≡13\times 5=15\equiv 1 : x≡5×6=30≡2(mod7)x\equiv 5\times 6=30\equiv 2\pmod 7. »

Pourquoi : La division n'existe pas modulo nn. Le raccourci fonctionne par hasard quand le quotient tombe juste, et il s'effondre dès que ce n'est pas le cas : 3x≡5(mod7)3x\equiv 5\pmod 7 n'a rien à voir avec 53\frac{5}{3}.

4. Réduire l'exposant modulo pp au lieu de p−1p-1

toute la question

Ce qu'il ne faut pas écrire

« 3100 mod 73^{100}\bmod 7 : je réduis 100100 modulo 77, ce qui donne 22, donc 32=9≡23^{2}=9\equiv 2. »

Ce qu'il faut écrire

« La base se réduit modulo 77, l'EXPOSANT modulo 7−1=67-1=6. Comme 100=6×16+4100=6\times 16+4, on a 3100≡34=81≡4(mod7)3^{100}\equiv 3^{4}=81\equiv 4\pmod 7. »

1234567891011121312345678période 6et ça recommence
Les puissances 3k mod 73^{k}\bmod 7 reprennent à l'identique tous les SIX pas, et 6=7−16=7-1 : c'est le petit théorème de Fermat. L'exposant se réduit donc modulo p−1p-1, la base modulo pp.

Pourquoi : Le petit théorème de Fermat dit ap−1≡1a^{p-1}\equiv 1, donc c'est la période p−1p-1 qui gouverne l'exposant. Deux modules cohabitent dans le même calcul, et les confondre donne un résultat plausible et faux.

5. Croire que tout élément non nul est inversible

toute la question, et un calcul qui ne peut pas aboutir

Ce qu'il ne faut pas écrire

« Modulo 66, je cherche l'inverse de 22 pour résoudre 2x≡42x\equiv 4. »

Ce qu'il faut écrire

« pgcd(2 ;6)=2≠1\mathrm{pgcd}(2\,;6)=2\neq 1 : 22 n'est PAS inversible modulo 66. C'est même un diviseur de zéro, puisque 2×3≡0(mod6)2\times 3\equiv 0\pmod 6. »

111234522240243330303444204255543212 × 3 ≡ 0 : 2 n'a pas d'inverse
Modulo 66, les cases rouges sont des produits NULS de facteurs non nuls : 22, 33 et 44 sont des diviseurs de zéro, et n'ont pas d'inverse.

Pourquoi : L'inversibilité modulo nn est exactement la primalité avec nn. Sur un module composé, une partie des éléments n'a pas d'inverse, et l'équation se résout alors par la condition de Bézout, pas par un inverse.

6. Appliquer Fermat sans vérifier ses deux hypothèses

toute la question, et une conclusion fausse en cryptographie

Ce qu'il ne faut pas écrire

« an−1≡1(modn)a^{n-1}\equiv 1\pmod n pour tout aa et tout nn. »

Ce qu'il faut écrire

« Le théorème demande nn PREMIER et nn ne divisant pas aa. Modulo 66, qui n'est pas premier, 25=32≡22^{5}=32\equiv 2 et non 11. »

Pourquoi : Sur un module composé, c'est le théorème d'Euler qui s'applique, avec φ(n)\varphi(n) à la place de p−1p-1. Utiliser Fermat hors de son cadre donne un résultat qui ressemble à une réponse.

7. Calculer la puissance entière avant de réduire

le temps de l'épreuve, et une calculatrice qui sature

Ce qu'il ne faut pas écrire

« 750 mod 137^{50}\bmod 13 : je calcule 7507^{50}, puis je divise par 1313. »

Ce qu'il faut écrire

« Je réduis à CHAQUE étape : 72=49≡107^{2}=49\equiv 10, 74≡102=100≡97^{4}\equiv 10^{2}=100\equiv 9, et ainsi de suite par élévations au carré successives. »

Pourquoi : 7507^{50} a plus de quarante chiffres : aucune calculatrice d'examen ne le rend exactement, et l'arrondi rend le reste faux. La compatibilité de la congruence avec la multiplication existe précisément pour éviter cela.

8. Annoncer une seule solution à une équation de congruence

la moitié des points de la question

Ce qu'il ne faut pas écrire

« 14x≡30(mod100)14x\equiv 30\pmod{100} : je trouve x≡45x\equiv 45, c'est la solution. »

Ce qu'il faut écrire

« d=pgcd(14 ;100)=2d=\mathrm{pgcd}(14\,;100)=2 divise 3030, donc il y a exactement DEUX solutions modulo 100100 : x≡45x\equiv 45 et x≡95x\equiv 95. »

0501004595+ 50 = 100 / 2
14x≡30(mod100)14x\equiv 30\pmod{100} a d=2d=2 solutions : 4545 et 9595, séparées de 1002=50\frac{100}{2}=50.

Pourquoi : Le nombre de solutions modulo nn vaut d=pgcd(a,n)d=\mathrm{pgcd}(a,n) dès que dd divise bb. Résoudre l'équation réduite donne une solution modulo nd\frac{n}{d}, qu'il faut ensuite déplier en dd solutions modulo nn.

Quelle méthode choisir

Ce qu'on a le droit de faire dans une congruence

Avant chaque manipulation, on regarde de quelle opération il s'agit. Trois sont libres, une est interdite, deux sont conditionnelles.

  • Si addition, soustraction, multiplication → libre : on réduit chaque terme AVANT de calculer

    Exemple : 17×23≡2×3=6(mod5)17\times 23\equiv 2\times 3=6\pmod 5

  • Si élévation à une puissance, module quelconque → libre sur la BASE, en réduisant à chaque carré; l'exposant, lui, ne se réduit pas sans hypothèse

    Exemple : 74≡102≡9(mod13)7^{4}\equiv 10^{2}\equiv 9\pmod{13}

  • Si réduction de l'EXPOSANT, module premier pp ne divisant pas aa → autorisée modulo p−1p-1, par le petit théorème de Fermat

    Exemple : 3100≡34≡4(mod7)3^{100}\equiv 3^{4}\equiv 4\pmod 7

    Sur un module composé, remplacer p−1p-1 par φ(n)\varphi(n) et vérifier que pgcd(a,n)=1\mathrm{pgcd}(a,n)=1.

  • Si simplification d'un facteur commun cc → autorisée seulement si pgcd(c,n)=1\mathrm{pgcd}(c,n)=1; sinon diviser AUSSI le module par pgcd(c,n)\mathrm{pgcd}(c,n)

    Exemple : 4×2≡4×5(mod6)4\times 2\equiv 4\times 5\pmod 6 donne 2≡5(mod3)2\equiv 5\pmod 3

  • Si division → INTERDITE. On multiplie par l'inverse, qui n'existe que si pgcd(a,n)=1\mathrm{pgcd}(a,n)=1

    Exemple : 3x≡6(mod7)3x\equiv 6\pmod 7 se résout par ×5\times 5, pas par ÷3\div 3

Quand l'inverse n'existe pas, l'équation n'est pas forcément insoluble : elle a pgcd(a,n)\mathrm{pgcd}(a,n) solutions dès que ce PGCD divise le second membre. C'est le cas le plus fréquent en examen.

Quel outil selon ce que l'énoncé demande

Les questions du chapitre se ramènent à six formes, et chacune a un outil unique. On l'identifie avant d'écrire la première ligne.

  • Si « quel est le reste de », « quel jour de la semaine » → division euclidienne, puis réduction du calcul modulo nn

    Exemple : 21000 mod 72^{1000}\bmod 7 par la périodicité

  • Si « calculer pgcd(a,b)\mathrm{pgcd}(a,b) » → algorithme d'Euclide, en tableau de restes successifs

    Exemple : pgcd(48 ;18)=6\mathrm{pgcd}(48\,;18)=6 en trois divisions

  • Si « trouver uu et vv tels que au+nv=dau+nv=d » → algorithme d'Euclide ÉTENDU, en remontant les égalités

    Exemple : 50−7×7=150-7\times 7=1 donne u=−7u=-7

  • Si « l'inverse de aa modulo nn » → vérifier pgcd(a,n)=1\mathrm{pgcd}(a,n)=1, puis Bézout : l'inverse est uu réduit dans [0 ;n−1][0\,;n-1]

    Exemple : l'inverse de 77 modulo 5050 est −7≡43-7\equiv 43

  • Si « résoudre ax≡b(modn)ax\equiv b\pmod n » → calculer d=pgcd(a,n)d=\mathrm{pgcd}(a,n); si d∤bd\nmid b, aucune solution; sinon diviser tout par dd, inverser, puis déplier en dd solutions

    Exemple : 14x≡30(mod100)14x\equiv 30\pmod{100} donne x≡45x\equiv 45 et x≡95x\equiv 95

  • Si « un exposant énorme » → Fermat pour réduire l'exposant, puis exponentiation rapide pour finir

    Exemple : 3100 mod 73^{100}\bmod 7 se ramène à 343^{4}

Toutes ces questions commencent par le même geste : calculer un PGCD. C'est lui qui décide si l'inverse existe, combien de solutions l'équation possède, et si Fermat s'applique.

La rédaction attendue

Le correcteur coche des étapes. Les voici dans l'ordre, avec la phrase de conclusion qu'il attend mot pour mot.

Calculer un inverse modulaire par Euclide étendu

Quand l'utiliser : L'énoncé demande l'inverse de aa modulo nn, ou une résolution qui en dépend.

  1. 1 Vérifier l'existence AVANT de calculer : « pgcd(7 ;50)=1\mathrm{pgcd}(7\,;50)=1, donc 77 est inversible modulo 5050. »
  2. 2 Dérouler l'algorithme d'Euclide en écrivant chaque division : « 50=7×7+150=7\times 7+1, puis 7=1×7+07=1\times 7+0. »
  3. 3 Remonter pour isoler le PGCD : « 1=50−7×71=50-7\times 7. »
  4. 4 Lire l'identité de Bézout modulo nn : « donc −7×7≡1(mod50)-7\times 7\equiv 1\pmod{50}. »
  5. 5 Réduire le coefficient dans [0 ;n−1][0\,;n-1] et VÉRIFIER : « −7≡43-7\equiv 43, et 7×43=301=6×50+17\times 43=301=6\times 50+1. »

Phrase de conclusion

L'inverse de 77 modulo 5050 est 4343, puisque 7×43=301≡1(mod50)7\times 43=301\equiv 1\pmod{50}.

Le piège : Rendre un coefficient de Bézout négatif comme inverse. Il est juste, mais un inverse s'écrit dans [0 ;n−1][0\,;n-1], et la vérification finale par multiplication est le seul moyen de s'assurer qu'on n'a pas inversé uu et vv.

Barème : En général 1 point pour la vérification du PGCD, 1 point pour l'algorithme déroulé, 1 point pour la remontée, 1 point pour l'inverse réduit et vérifié.

Résoudre une équation de congruence ax≡b(modn)ax\equiv b\pmod n

Quand l'utiliser : Toute équation linéaire modulo nn, y compris déguisée en problème de clé de contrôle ou de calendrier.

  1. 1 Calculer d=pgcd(a,n)d=\mathrm{pgcd}(a,n) et TRANCHER : « d=2d=2 divise 3030, donc il y a des solutions, exactement 22 modulo 100100. »
  2. 2 Diviser les trois quantités par dd, le module compris : « 7x≡15(mod50)7x\equiv 15\pmod{50}. »
  3. 3 Calculer l'inverse de ad\frac{a}{d} modulo nd\frac{n}{d} par Euclide étendu.
  4. 4 Multiplier et réduire : « x≡43×15≡45(mod50)x\equiv 43\times 15\equiv 45\pmod{50}. »
  5. 5 DÉPLIER les dd solutions modulo nn en ajoutant nd\frac{n}{d}, puis vérifier chacune dans l'équation de départ.

Phrase de conclusion

L'équation 14x≡30(mod100)14x\equiv 30\pmod{100} admet exactement deux solutions, x≡45(mod100)x\equiv 45\pmod{100} et x≡95(mod100)x\equiv 95\pmod{100}.

Le piège : Oublier de diviser le MODULE en même temps que les deux membres. On obtient alors 7x≡15(mod100)7x\equiv 15\pmod{100}, dont la solution ne vérifie pas l'équation de départ.

Barème : 1 point pour la condition d'existence, 1 point pour la division par dd module compris, 1 point pour l'inverse, 1 point pour le dépliage des dd solutions.

Vérifier avant de rendre

Cinq minutes de vérification récupèrent plus de points qu'un exercice de plus commencé à la hâte.

L'exercice type décortiqué

Résoudre 14x≡30(mod100)14x\equiv 30\pmod{100}, jusqu'aux deux solutions

Résoudre dans Z\mathbb{Z} l'équation de congruence 14x≡30(mod100)14x\equiv 30\pmod{100}.

On précisera le nombre exact de solutions modulo 100100 et l'on vérifiera chacune.

Étape 1

pgcd(14 ;100)\mathrm{pgcd}(14\,;100) : 100=7×14+2100=7\times 14+2, puis 14=7×2+014=7\times 2+0, donc d=2d=2. Comme 22 divise 3030, l'équation a des solutions, et il y en a exactement d=2d=2 modulo 100100.

Pourquoi

Cette première ligne décide de tout : elle dit s'il y a des solutions et combien. Une copie qui la saute peut trouver la bonne valeur et perdre quand même la moitié des points, faute d'avoir compté.

Étape 2

On divise les DEUX membres et le MODULE par d=2d=2 : 7x≡15(mod50)7x\equiv 15\pmod{50}.

Pourquoi

Le module se divise lui aussi, sans quoi l'équation obtenue n'est pas équivalente. C'est l'oubli qui produit une solution ne vérifiant pas l'énoncé de départ.

Étape 3

pgcd(7 ;50)=1\mathrm{pgcd}(7\,;50)=1, donc 77 est inversible modulo 5050. Euclide : 50=7×7+150=7\times 7+1, donc 1=50−7×71=50-7\times 7 et −7×7≡1(mod50)-7\times 7\equiv 1\pmod{50}.

Pourquoi

On vérifie l'inversibilité avant de chercher l'inverse. Après la division par dd, elle est garantie, mais l'écrire vaut le point de rigueur et prouve que la condition a été comprise.

Étape 4

L'inverse de 77 modulo 5050 est donc −7≡43-7\equiv 43. Contrôle : 7×43=301=6×50+17\times 43=301=6\times 50+1.

Pourquoi

On réduit dans [0 ;49][0\,;49] et l'on vérifie par multiplication. Ces deux gestes prennent dix secondes et éliminent la totalité des erreurs de signe de la remontée.

Étape 5

On multiplie l'équation par 4343 : x≡43×15=645(mod50)x\equiv 43\times 15=645\pmod{50}, et 645=12×50+45645=12\times 50+45, donc x≡45(mod50)x\equiv 45\pmod{50}.

Pourquoi

On multiplie, on ne divise jamais. Le résultat est ici une congruence modulo 5050, pas modulo 100100 : la question n'est pas encore terminée, et c'est le moment où la moitié des copies s'arrête.

Étape 6

On déplie modulo 100100 : x≡45x\equiv 45 et x≡45+50=95x\equiv 45+50=95. Ce sont bien d=2d=2 solutions, comme annoncé à la première ligne.

Pourquoi

Le dépliage consiste à ajouter nd\frac{n}{d} autant de fois que nécessaire. Le compte annoncé au début sert ici de contrôle : deux solutions attendues, deux solutions obtenues.

Étape 7

Vérification : 14×45=630=6×100+3014\times 45=630=6\times 100+30 et 14×95=1330=13×100+3014\times 95=1330=13\times 100+30. Les deux valeurs conviennent.

Pourquoi

On réinjecte chaque solution dans l'équation de DÉPART, pas dans l'équation réduite. C'est la seule vérification qui attrape l'oubli de la division du module.

Conclusion rédigée

L'équation 14x≡30(mod100)14x\equiv 30\pmod{100} admet exactement deux solutions modulo 100100 : x≡45x\equiv 45 et x≡95x\equiv 95.

L'erreur classique sur cet exercice : Diviser seulement les deux membres et garder le module : 7x≡15(mod100)7x\equiv 15\pmod{100}. L'inverse de 77 modulo 100100 vaut 4343 également, et l'on obtient x≡45(mod100)x\equiv 45\pmod{100}, donc une seule solution au lieu de deux. La vérification sur l'équation de départ ne révèle rien, puisque 4545 convient : seule la condition sur le PGCD signale la solution manquante.

À savoir par cœur

  • • Le reste d'une division euclidienne est TOUJOURS dans [0 ;n−1][0\,;n-1], même pour un dividende négatif.
  • • On réduit AVANT de calculer : la congruence passe l'addition et la multiplication, jamais la division.
  • • ac≡bc(modn)ac\equiv bc\pmod n donne a≡ba\equiv b seulement si pgcd(c,n)=1\mathrm{pgcd}(c,n)=1; sinon on divise aussi le module.
  • • aa est inversible modulo nn si et seulement si pgcd(a,n)=1\mathrm{pgcd}(a,n)=1, et l'inverse est le uu de Bézout.
  • • Tous les non nuls sont inversibles si et seulement si nn est PREMIER; sinon il y a des diviseurs de zéro.
  • • Fermat : pp premier et p∤ap\nmid a donnent ap−1≡1(modp)a^{p-1}\equiv 1\pmod p. Base modulo pp, EXPOSANT modulo p−1p-1.
  • • ax≡b(modn)ax\equiv b\pmod n a des solutions si et seulement si pgcd(a,n)\mathrm{pgcd}(a,n) divise bb, et il y en a alors exactement pgcd(a,n)\mathrm{pgcd}(a,n).
  • • Tout commence par un PGCD : il décide de l'inverse, du nombre de solutions et de l'usage de Fermat.

Questions fréquentes

Le reste d'une division peut-il être négatif ?

Non, jamais en mathématiques : la division euclidienne impose un reste compris entre zéro et le module moins un. Moins dix-sept modulo cinq vaut donc trois, et non moins deux. L'opérateur pourcent des langages C, C plus plus et Java rend pourtant un reste négatif dans ce cas, contrairement à Python : c'est une convention de programmation, pas une définition.

Peut-on simplifier une congruence par un facteur commun ?

Seulement si ce facteur est premier avec le module. Sinon, on divise aussi le module par le plus grand commun diviseur du facteur et du module. Par exemple quatre fois deux et quatre fois cinq sont congrus modulo six, alors que deux et cinq ne le sont pas : ils ne le deviennent que modulo trois.

Comment calculer un inverse modulaire ?

On vérifie d'abord que le nombre est premier avec le module, sans quoi l'inverse n'existe pas. On déroule ensuite l'algorithme d'Euclide, puis on remonte les égalités pour écrire un égale a fois u plus n fois v. Le coefficient u est l'inverse, qu'on réduit entre zéro et le module moins un, puis qu'on vérifie par multiplication.

Comment calculer une très grande puissance modulo n ?

On ne calcule jamais la puissance entière. Si le module est premier et ne divise pas la base, le petit théorème de Fermat permet de réduire l'exposant modulo le module moins un. On termine par l'exponentiation rapide, qui élève au carré et réduit à chaque étape, en environ deux fois le logarithme en base deux de l'exposant multiplications.

Combien de solutions a une équation de congruence ?

Elle en a exactement autant que le plus grand commun diviseur du coefficient et du module, à condition que ce diviseur divise aussi le second membre; sinon elle n'en a aucune. On divise alors les deux membres et le module par ce diviseur, on résout, puis on déplie la solution obtenue en ajoutant le module réduit.

Passer à la pratique

Exercices corrigés : L'arithmétique modulaire

Une méthode se prouve sur une copie, pas sur une fiche. La série du même chapitre reprend chacun de ces pièges dans un exercice, avec le corrigé rédigé étape par étape.

  • 12 exercices corrigés
  • 120 points
  • 150 minutes
Faire les exercices
Il manque quelque chose dans cette fiche ? Une méthode, un piège, un exercice pour l'appliquer, une erreur repérée : dis-le-moi, je lis chaque demande.

L'envoi passe par ton espace gratuit : c'est ce qui me permet de te répondre et de te prévenir quand l'exercice est ajouté. Un courriel suffit, pas de mot de passe. Crée ton espace. Pas envie de créer un compte ? Écris-moi directement.

De quoi s'agit-il ?
Je lis chaque demande moi-même, personne d'autre ne la voit. Inutile d'écrire ton nom ou celui de ton école.
Quand ta demande est traitée, tu es prévenu par courriel et dans ton espace.

En envoyant, tu acceptes que je lise ta demande pour y répondre. Elle est gardée avec ton compte, effacée avec lui, et jamais publiée : politique de confidentialité.

Fiche précédente Systèmes de numération informatique Fiche suivante Théorie des ensembles et relations

© Ahmed Squalli Houssaini. Fiche publiée sur www.letuteurscientifique.ca/fiches/n11-arithmetique-modulaire. Libre pour l'usage personnel et en classe ; sa republication ailleurs demande une autorisation écrite (mentions légales).

Voir aussi

Vous cherchez un tuteur en mathématiques pour l'informatique 201-N11 à Montréal ?

Contactez-moi pour une première séance. On travaille l'arithmétique modulaire au niveau réel des évaluations, des congruences jusqu'à l'algorithme d'Euclide étendu et à RSA.

Site par Studio Squalli