Arithmétique modulaire

L' arithmétique modulaire est un système arithmétique d'entiers modifiés, ou 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.

Table of contents
1 Définition de Modulo
2 Applications de l'arithmétique modulaire
3 Congruence modulo
4 Ressources externes

Définition de Modulo

Si a est un entier quelconque et n un entier strictement positif, nous écrivons a mod n pour représenter le reste dans {0, ..., n-1} obtenu en effectuant une division euclidienne de a par n. Par exemple, 26 mod 12 = 2.

Dans certains langages de programmation, cette opération est écrite a % n.

Implémentation de la fonction mod

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.

Applications de l'arithmétique modulaire

L'arithmétique modulaire, fut pour la première fois étudiée par Carl Friedrich Gauss à la fin du dix-huitième siècle, et appliquée à la théorie des nombres, à l' algèbre abstraite et à la cryptographie.

Les opérations arithmétiques fondamentales sont effectuées par de nombreux ordinateurs en arithmétique modulaire, modulo 2b (b étant le nombre de bits utilisés pour représenter les données).

Ceci intervient les langages de programmation tel que le langage C; où par exemple les opérations arithmétiques sur les nombres entiers de type int sont prises modulo 232, sur la plupart des ordinateurs.

Congruence modulo

Deux entiers a et b sont dits congruents modulo n, ce qui s'écrit

a = b (mod n)
si l'une des conditions équivalentes suivantes est vérifiée :
  1. leur différence est divisible par n;
  2. ils ont même reste quand ils sont divisés par n, i.e. a mod n = b mod n;
  3. a-b=kn pour un certain entier k; (utilisant cette définition, nous pouvons généraliser à d'autres ensembles de nombres. Par exemple, nous pouvons définir a = b (mod π) si a-b=kπ pour un entier k.)
  4. a-bnZ, l' idéal de tous les entiers divisibles par n.

Par exemple
14 = 26 (mod 12).
C'est une relation d'équivalence, et la classe d'équivalence de l'entier a est notée [a]n (ou a + nZ ou a mod n, bien que cette dernière notation soit ambiguë). Cette relation d'équivalence a une importante propriété: si
a1 = b1 (mod n)    and    a2 = b2 (mod n)
alors
a1 + a2 = b1 + b2 (mod n)
et
a1a2 = b1b2 (mod n).
Ceci peut être aussi exprimé de la façon suivante:
(a1 + a2) mod n = ((a1 mod n) + (a2 mod n)) mod n
et
(a1a2) mod n = ((a1 mod n)(a2 mod n)) mod n
Ce qui permet de définir une addition et une multiplication sur l'ensemble
Zn = { [0]n, [1]n, [2]n, ..., [n-1]n }
de toutes les classes d'équivalence par les règles suivantes: De cette façon, Zn devient un anneau commutatif à n éléments. Par exemple, dans l'anneau Z12, nous avons
[8]12×[3]12 + [6]12 = [6]12.
Le terme « anneau » vient d'ici, parce que les nombres 0, ..., n-1 sont 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. À partir de la dernière des quatre conditions équivalentes, nous déduisons que est l'anneau quotient de par l'idéal , et est souvent noté .

Si a et b sont des entiers, l'équation de congruence

ax = b (mod n)
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 du reste 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
ap = a (mod p).
Ce résultat fut généralisé par Euler: pour tout entier strictement positif n et tout entier a premier avec n,
aφ(n) = 1 (mod 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 .

Ressources externes