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.

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

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 0r<n0\leq r<n.
  • Cela vaut aussi pour a<0a<0 : 17=5×(4)+3-17=5\times(-4)+3, donc 17mod5=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;n1][0\,;n-1] coûte cinq secondes.

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

  • ab(modn)a\equiv b\pmod n signifie que nn divise aba-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 acbc(modn)ac\equiv bc\pmod n on ne peut tirer ab(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).

Réduire avant de calculer est aussi ce qui rend les calculs faisables : 750mod137^{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,amodn)\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;n1][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×30(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 ap11(modp)a^{p-1}\equiv 1\pmod p.
  • Conséquence pratique : on réduit la BASE modulo pp et l'EXPOSANT modulo p1p-1. Deux modules différents, c'est le piège du chapitre.
  • EXPONENTIATION RAPIDE : aemodna^{e}\bmod n en environ 2log2e2\log_{2}e multiplications, en élevant au carré et en réduisant à chaque étape.
  • ÉQUATION axb(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.

Sur un module non premier, c'est le théorème d'Euler qui remplace Fermat, avec φ(n)\varphi(n) à la place de p1p-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

« 17mod5=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 17mod5=3-17\bmod 5=3 : le reste d'une division euclidienne appartient toujours à [0;n1][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×24×5(mod6)4\times 2\equiv 4\times 5\pmod 6, donc 25(mod6)2\equiv 5\pmod 6. »

Ce qu'il faut écrire

« pgcd(4;6)=21\mathrm{pgcd}(4\,;6)=2\neq 1 : on ne simplifie pas. On divise le MODULE par 22 et l'on obtient 25(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

« 3x6(mod7)3x\equiv 6\pmod 7, donc x63=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=1513\times 5=15\equiv 1 : x5×6=302(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 : 3x5(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 p1p-1

toute la question

Ce qu'il ne faut pas écrire

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

Ce qu'il faut écrire

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

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

Pourquoi : Le petit théorème de Fermat dit ap11a^{p-1}\equiv 1, donc c'est la période p1p-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 2x42x\equiv 4. »

Ce qu'il faut écrire

« pgcd(2;6)=21\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×30(mod6)2\times 3\equiv 0\pmod 6. »

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

« an11(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=3222^{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 p1p-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

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

Ce qu'il faut écrire

« Je réduis à CHAQUE étape : 72=49107^{2}=49\equiv 10, 74102=10097^{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

« 14x30(mod100)14x\equiv 30\pmod{100} : je trouve x45x\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 : x45x\equiv 45 et x95x\equiv 95. »

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×232×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 : 741029(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 p1p-1, par le petit théorème de Fermat

    Exemple : 3100344(mod7)3^{100}\equiv 3^{4}\equiv 4\pmod 7

    Sur un module composé, remplacer p1p-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×24×5(mod6)4\times 2\equiv 4\times 5\pmod 6 donne 25(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 : 3x6(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 : 21000mod72^{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 : 507×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;n1][0\,;n-1]

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

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

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

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

    Exemple : 3100mod73^{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=507×71=50-7\times 7. »
  4. 4 Lire l'identité de Bézout modulo nn : « donc 7×71(mod50)-7\times 7\equiv 1\pmod{50}. »
  5. 5 Réduire le coefficient dans [0;n1][0\,;n-1] et VÉRIFIER : « 743-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=3011(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;n1][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 axb(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 : « 7x15(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 : « x43×1545(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 14x30(mod100)14x\equiv 30\pmod{100} admet exactement deux solutions, x45(mod100)x\equiv 45\pmod{100} et x95(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 7x15(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 14x30(mod100)14x\equiv 30\pmod{100}, jusqu'aux deux solutions

Résoudre dans Z\mathbb{Z} l'équation de congruence 14x30(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 : 7x15(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=507×71=50-7\times 7 et 7×71(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 743-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 : x43×15=645(mod50)x\equiv 43\times 15=645\pmod{50}, et 645=12×50+45645=12\times 50+45, donc x45(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 : x45x\equiv 45 et x45+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 14x30(mod100)14x\equiv 30\pmod{100} admet exactement deux solutions modulo 100100 : x45x\equiv 45 et x95x\equiv 95.

L'erreur classique sur cet exercice : Diviser seulement les deux membres et garder le module : 7x15(mod100)7x\equiv 15\pmod{100}. L'inverse de 77 modulo 100100 vaut 4343 également, et l'on obtient x45(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;n1][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.
  • acbc(modn)ac\equiv bc\pmod n donne aba\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 pap\nmid a donnent ap11(modp)a^{p-1}\equiv 1\pmod p. Base modulo pp, EXPOSANT modulo p1p-1.
  • axb(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.

  • 10 exercices corrigés
  • 100 points
  • 150 minutes
Faire les exercices
Fiche précédente Systèmes de numération informatique Fiche suivante Théorie des ensembles et relations

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