| Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées | ||||||
L'arithmétique modulaire, fut pour la première fois étudiée par le mathématicien allemand Carl Friedrich Gauss à la fin du XVIIIe siècle et présentée au public dans ses Disquisitiones arithmeticae
en 1801. Elle est aujourd'hui couramment utilisée en théorie des nombres, en algèbre abstraite et en cryptographie.
C'est une arithmétique où l'on ne raisonne pas directement sur les nombres mais sur leurs restes respectifs par la division euclidienne par un certain entier : le modulo (qui sera noté n tout au long de l'article).
| Sommaire |
L'arithmétique modulaire est un système arithmétique d'entiers modifiés, où les nombres sont « abaissés » lorsqu'ils atteignent une certaine valeur.
Donnons comme exemple, l'« arithmétique de l'horloge » qui se réfère à l'« addition » des heures indiquées par la petite aiguille d'une horloge : concrètement, si nous commençons à 7 heures et ajoutons 8 heures, alors plutôt que de terminer à 15 heures (comme dans l'addition normale), nous sommes à 3 heures. De la même manière, si nous commençons à midi et nous attendons 7 heures trois fois de suite, nous nous retrouvons à 9 heures (au lieu de 21).
Fondamentalement, quand nous atteignons 12, nous recommençons ; nous travaillons modulo 12. Pour généraliser, nous pouvons facilement imaginer une horloge qui contient un nombre arbitraire de nombre d'heures, et faire des calculs avec un nouveau modulo. En arithmétique traditionnelle, 8 + 6 est égal à 14, tandis qu'en arithmétique modulo 12 le résultat est 2, parce que 2 est le reste de la division euclidienne de 14 par 12.
Deux entiers a et b sont dits congruents modulo n, où n est un entier non nul et différent de 1 et -1, si l'une des conditions équivalentes suivantes est vérifiée :
On écrira alors :
ce qui se lit dans tous les cas « a est congru à b modulo n ». Par exemple
La congruence modulo n a les propriétés suivantes :
C'est donc une relation d'équivalence.
Elle a de plus des propriétés algébriques remarquables :
Si
alors
et
On peut parler d'une certaine « compatibilité » avec les opérations d'addition et de multiplication des entiers (« compatibilité » avec la structure d'anneau de ℤ). Plus généralement on appellera congruence sur une structure donnée toute relation d'équivalence « compatible » avec cette structure.
Ces quelques propriétés vont nous permettre de définir le domaine de l'arithmétique modulaire : les ensembles quotients ℤ/nℤ.

La congruence modulo n étant une relation d'équivalence sur l'ensemble des entiers, ont peut donc diviser cet ensemble en classes d'équivalences.
La classe
d'équivalence de l'entier a est l'ensemble des entiers b tels que
. On la note , ou
, ou encore, tout simplement,
quand on sait de quel n on parle.
L'ensemble quotient de
par la congruence
modulo n est l'ensemble {
}, noté encore
et parfois
.
On définit une addition et une multiplication sur l'ensemble
par les règles suivantes :
![[a]_n + [b]_n = [a + b]_n\,](/Images/8/82db375a309c7b5a75dadb2e117b782b.png)
![[a]_n \times [b]_n = [ab]_n\,](/Images/e/e092e33c0c1904861823d804de09a2f5.png)
De cette façon,
devient un
anneau commutatif à n éléments.
Par exemple, dans l'anneau
, nous avons
.L'origine du terme anneau se trouve ici : les nombres 0, …, n−1 sont en effet arrangés dans un anneau de la même manière que les chiffres des heures sur une horloge.
En algèbre abstraite, il apparaît que l'arithmétique
modulaire est un cas particulier d'un anneau quotient formé à partir d'un anneau modulo un idéal.
Ainsi
est l'anneau quotient
de
par l'idéal
, d'où cette
notation à première vue mystérieuse : «
».
Si a et b sont des entiers, l'équation de congruence

a une solution x si et seulement si le plus grand commun diviseur pgcd(a, n) divise b. Pour plus de détails vous pourrez consulter la page concernant le théorème de congruence linéaire. Des systèmes d'équations de congruence plus compliqués avec différentes congruences peuvent être résolus en utilisant le théorème des restes chinois.
Posons b=1. La proposition précédente est équivalente à l'affirmation que les éléments inversibles de l'anneau
sont précisément les éléments
[a]n tels que a et n n'ont aucun diviseur en commun non trivial (sont premiers entre eux). Ainsi,
est un corps si et seulement si n est un nombre premier. Tous les corps
finis sont des extensions de ceux-ci.
Un important théorème relatif aux congruences modulo un nombre premier est le petit théorème de Fermat: si p est un nombre premier et a est un entier quelconque, alors

Ce résultat fut généralisé par Euler: pour tout entier strictement positif n et tout entier a premier avec n,

où
désigne la fonction φ d'Euler comptant les entiers compris entre 1 et
n et premiers avec n. Le théorème d'Euler est
une conséquence du théorème de Lagrange, appliqué
au groupe des inversibles de l'anneau
.
Une très grande part des calculs réalisés en informatique sont des
calculs d'arithmétique modulaire (d'autres se font, par exemple, en arithmétique
saturée). Ceci est dû au fait que les données manipulées sont toujours représentées au final comme une suite finie de
bits, c’est-à-dire un entier compris entre 0 et
et que donc l'arithmétique des entiers doit être approchée sur ces ensembles finis. De plus, nombre d'opérations sont
réalisées bit à bit, c’est-à-dire dans
.
Du fait de cette utilisation au quotidien, des notations spécifiques sont apparues pour cette discipline.
Ainsi, en programmation informatique, on désigne par « modulo » l'opération de calcul du reste de la division euclidienne. Si a est un entier quelconque et n un entier strictement positif, on écrira a mod n pour représenter le reste dans {0, …, n−1} de la division de a par b. Par exemple, 26 mod 12 = 2.
On note souvent cette opération a % n (notation utilisée dans les langages dérivés de C).
Dans la pratique x mod y peut être calculé en utilisant d'autres fonctions. Des différences apparaissent suivant les types des variables utilisées, lesquels contiennent le type entier dans les implémentations courantes.
En utilisant la partie entière floor,
floor(z) est le plus grand entier inférieur à z :
x mod y = x - y*floor(x/y).
En utilisant la fonction de troncature de la partie décimale (désignée par remain() dans certains calculateurs et
qui retourne toujours un entier positif ; réalisée en C par l'opérateur de base %) :
x mod y = x - y*iPart(x/y)
Dans le cas de la fonction partie entière floor, le résultat est négatif pour un modulo avec un entier strictement négatif (en convenant de poser a mod -n = -(a mod n), par exemple 1 mod -2 = -1). Nous obtenons une fonction notée mod() sur les calculateurs et implémentée dans certains langages de haut niveau incluant Perl. Perl utilise aussi l'opérateur % pour effectuer une opération modulo, en faisant allusion à l'opérateur de division /.
Les deux définitions permettent à x et y d'être des entiers ou des nombres rationnels.
L'expression x mod 0 n'est pas définie dans la majorité des systèmes numériques, bien que certains la définissent comme étant x.


