# Petit théorème de Fermat

En mathématiques, le petit théorème de Fermat est un résultat de l'arithmétique modulaire, qui peut aussi se démontrer avec les outils de l'arithmétique élémentaire.
Il s'énonce comme suit : « si p est un nombre premier et si a est un entier non divisible par p, alors a$^{p–1}$ – 1 est un multiple de p », autrement dit (sous les mêmes conditions sur a et p), a$^{p–1}$ est congru à 1 modulo p :
$a^{p-1}\equiv 1{\pmod {p}}$
Un énoncé équivalent est : « si p est un nombre premier et si a est un entier quelconque, alors a$^p$ – a est un multiple de p » :
$a^{p}\equiv a{\pmod {p}}$
Il doit son nom à Pierre de Fermat, qui l'énonce pour la première fois en 1640.
Il dispose de nombreuses applications, à la fois en arithmétique modulaire et en cryptographie.

## Histoire

La première apparition connue de l'énoncé de ce théorème provient d'une lettre de Fermat à Frénicle de Bessy datée d'octobre 1640, qui a été publiée par son fils Samuel en 1679 dans les Varia Opera. On peut y lire ceci : « Tout nombre premier mesure infailliblement une des puissances – 1 de quelque progression que ce soit, et l'exposant de ladite puissance est sous-multiple du nombre premier donné – 1 ; et, après qu'on a trouvé la première puissance qui satisfait à la question, toutes celles dont les exposants sont multiples de l'exposant de la première satisfont tout de même à la question. », soit en termes modernes, pour tout nombre premier p et tout nombre a (premier avec p), il existe un entier t tel que p divise a$^t$ – 1, et, t étant le plus petit entier vérifiant ceci, t divise p – 1 et tous les multiples n de t vérifient que p divise a$^n$ – 1.
On en déduit immédiatement l'énoncé donné en introduction, et réciproquement on déduit de celui-ci l'énoncé plus précis que donne Fermat. Comme habituellement dans sa correspondance, il ne donne aucune démonstration de ce résultat, ni même, comme il le fait parfois, d'indications à propos de celle-ci, mais précise : « Et cette proposition est généralement vraie en toutes progressions et en tous nombres premiers ; de quoi je vous envoierois la démonstration, si je n'appréhendois d'être trop long. »
À cette époque, il est d'usage de ne pas publier les preuves des théorèmes. Ainsi Leibniz rédige une démonstration vers 1683 mais ne la publie pas. En 1741, 1750 et 1761, Euler en publie deux qui procèdent par récurrence et utilisent le développement du binôme, et une qui étudie la répartition des restes modulo le nombre premier considéré. On trouve cette dernière en 1801 dans les Disquisitiones arithmeticae de Gauss. Il y résume également la première démonstration d'Euler, et en donne une version plus rapide utilisant le développement du multinôme.
Gauss mentionne en 1801 que « Ce théorème remarquable, tant par son élégance que par sa grande utilité, s'appelle ordinairement « théorème de Fermat », du nom de l'inventeur ». On trouve la dénomination « petit théorème de Fermat » (kleine Fermatsche Satz) dans un ouvrage de Kurt Hensel de 1913.
Un étudiant américain, cité entre autres par Dickson, avait avancé que le théorème était déjà connu en Chine 2 000 ans avant Fermat, dans le cas particulier a = 2, accompagné d'une réciproque — trivialement fausse. Cette « hypothèse chinoise » n'est qu'une légende urbaine, due à une erreur de traduction qui s'est amplifiée et déformée au fil des citations$^,$.

## Exemples

Voici quelques exemples (fondés sur le second énoncé) :
* 5$^3$ − 5 = 120 est divisible par 3
* 7$^2$ − 7 = 42 est divisible par 2.
* 2$^5$ − 2 = 30 est divisible par 5.
* (−3)$^7$ + 3 = −2 184 est divisible par 7.
* 2$^{97}$ − 2 = 158 456 325 028 528 675 187 087 900 670 est divisible par 97.

## Applications

Les applications sont nombreuses, particulièrement en cryptographie. On trouve néanmoins des exemples classiques d'applications du théorème en mathématiques pures.

### Applications théoriques

Le petit théorème de Fermat est historiquement utilisé pour analyser la décomposition en produit de facteurs premiers de certains entiers. Ainsi Fermat écrit à Mersenne (1588-1648) : « Vous me demandez si le nombre 100 895 598 169 est premier ou non, et une méthode pour découvrir, dans l'espace d'un jour, s'il est premier ou composé. À cette question, je réponds que ce nombre est composé et se fait du produit de ces deux : 898 423 et 112 303, qui sont premiers. » En utilisant une méthode analogue, Euler infirme l'unique conjecture fausse de Fermat, en prouvant que les nombres de Fermat ne sont pas tous premiers.
Ce théorème est aussi utilisé pour démontrer des résultats de théorie algébrique des nombres, comme le théorème de Herbrand-Ribet. Il dépasse le cadre strict de l'arithmétique, avec une utilisation pour l'étude des points fixes de l'endomorphisme de Frobenius par exemple.

### Cryptographie asymétrique

La cryptographie à clé publique correspond à un code s'attachant à assurer la confidentialité des messages à l'aide de deux clés de chiffrement. L'une, permettant de chiffrer le message, est publique. L'autre ayant pour objectif le déchiffrement est gardée secrète.
Une famille importante de systèmes asymétriques utilise l'algorithme de chiffrement RSA. La clé secrète est la décomposition d'un grand nombre entier, souvent de plusieurs centaines de chiffres. Il contient deux facteurs premiers. L'essentiel des techniques industrielles du début du XXIe siècle se fonde sur le petit théorème de Fermat pour générer des grands nombres premiers ou pour tester la primalité d'un nombre.

### Test de primalité

Le petit théorème de Fermat donne une condition nécessaire pour qu'un nombre p soit premier. Il faut en effet que, pour tout a plus petit que p, a$^{p–1}$ soit congru à 1 modulo p. Ce principe est la base du test de primalité de Fermat. Il existe de nombreuses variantes algorithmiques de ce test. Les plus connues sont le test de primalité de Solovay-Strassen et surtout le test de primalité de Miller-Rabin.

### Nombre pseudo-premier

Les tests précédents utilisent une condition nécessaire mais non suffisante. Ainsi, il existe des entiers p non premiers tels que pour tout a premier avec p, a$^{p–1}$ soit toujours congru à 1 modulo p. Le nombre 1 729 est un exemple. De tels entiers p sont appelés nombres de Carmichael.
Les tests indiqués au paragraphe précédent sont tous statistiques, au sens où il existe toujours une probabilité, parfois très faible, pour que le nombre ayant passé le test ne soit néanmoins pas premier. Ces nombres sont appelés pseudo-premiers et sont attachés à des tests particuliers.

## Démonstrations
### Par le théorème de Lagrange

La seconde preuve d'Euler du premier énoncé, telle que reprise par Gauss, reformulée en termes modernes, consiste à démontrer que l'ordre t de a dans le groupe multiplicatif (ℤ/pℤ)* est un diviseur de l'ordre p–1 de ce groupe (il démontre donc le théorème de Lagrange dans le cas particulier du sous-groupe engendré par a). Il en déduit immédiatement le petit théorème de Fermat, en élevant les deux membres de l'équation a$^t$ ≡ 1 (mod p) à la puissance : l'entier (p – 1)/t. Le résultat et sa démonstration valent pour n'importe quel groupe fini (ici le groupe multiplicatif (ℤ/pℤ)* d'ordre p - 1).

### Démonstration d'Euler et de Leibniz

La démonstration d'Euler et de Leibniz du second énoncé utilise la formule du binôme de Newton et un raisonnement par récurrence sur l'entier a, supposé positif sans perte de généralité. Leur raisonnement (reformulé ici dans le langage des congruences introduit ultérieurement par Gauss), est le suivant :
* La proposition a$^p$ ≡ a mod p est vraie pour a = 1.
* Tout entier k vérifie : $(k+1)^{p}\equiv k^{p}+1{\pmod {p}}$. Il suffit, pour cela, de développer l'expression (k + 1)$^p$ et de remarquer que tous les coefficients binomiaux à l'exception du premier et du dernier sont des multiples de p car p est premier (une démonstration est donnée dans le paragraphe « Diviseurs et coefficients binomiaux » de l'article « Coefficient binomial »).
* Enfin, si la proposition est vraie pour a = k alors elle l'est aussi pour a = k + 1. En effet, grâce au point précédent, il est prouvé que $(k+1)^{p}\equiv k^{p}+1{\pmod {p}}$. Si de plus $k^{p}\equiv k{\pmod {p}}$, alors $(k+1)^{p}\equiv k+1{\pmod {p}}$.

### Équivalence des deux énoncés

Si le premier énoncé est vrai alors le second aussi : Pour a quelconque, comme a$^p$ – a est égal au produit a(a$^{p–1}$ – 1), on sait que ce produit est toujours divisible par p, car ou bien a est multiple de p, ou bien il ne l'est pas mais le premier énoncé assure alors que a$^{p–1}$ – 1 est divisible par p.
Réciproquement, le premier énoncé se déduit du second en utilisant le lemme d'Euclide : si a(a$^{p–1}$ – 1) est divisible par p et si a ne l'est pas, alors a$^{p–1}$ – 1 l'est.

### Une démonstration arithmétique élémentaire

Une autre démonstration du premier énoncé est analogue (en plus simple) à une preuve du lemme de Gauss : l'astuce ici est d'évaluer modulo p, de deux façons, le produit
    $N=a\times 2a\times 3a\times \dots (p-1)a$.
La preuve est très rapide en effectuant les calculs dans l'anneau ℤ/pℤ, mais on peut aussi la détailler en utilisant seulement la division euclidienne, le lemme d'Euclide, et une propriété algébrique de la congruence sur les entiers.
Supposons que a n'est pas divisible par p et notons
    N le produit a × 2a × 3a × … ×(p – 1)a
    r$_k$ le reste de la division euclidienne de ka par p, pour tout entier k de 1 à p – 1. Alors
* En réordonnant les facteurs, N = 1×2× … ×(p – 1)×a$^{p–1}$ = (p – 1)!a$^{p–1}$.
* Par ailleurs, N ≡ r$_1$×r$_2$× … ×r$_{p–1}$ mod p. En effet, si dans un produit on remplace un facteur par un entier qui lui est congru modulo p alors le nouveau produit est congru modulo p à l'ancien. En remplaçant dans N, un par un, chaque ka par r$_k$, le résultat est donc congru à N modulo p.
* Or r$_1$×r$_2$× … ×r$_{p–1}$ = (p – 1)! car (r$_1$, r$_2$, … , r$_{p–1}$) est une permutation de (1, 2, … , p – 1). En effet, 0 ≤ r$_k$ ≤ p – 1 et
    aucun r$_k$ n'est nul, car (d'après le lemme d'Euclide) aucun ka n'est divisible par p ;
    les r$_k$ sont distincts deux à deux, car si r$_i$ = r$_j$ alors (i – j)a est divisible par p, donc (à nouveau par le lemme d'Euclide) i – j aussi, donc (comme –p < i – j < p) i = j.
* Des trois points précédents on déduit : (p – 1)!a$^{p–1}$ ≡ (p – 1)! mod p, autrement dit (p – 1)!(a$^{p–1}$ – 1) est divisible par p. Par application répétée du lemme d'Euclide, on obtient la conclusion : a$^{p–1}$ – 1 est divisible par p.

### Une démonstration par double dénombrement

On peut démontrer le petit théorème de Fermat en comptant de deux manières différentes le nombre de mots de p symboles dans un alphabet à a symboles comportant au moins deux symboles différents.

## Généralisations

Une légère généralisation du théorème s'énonce de la manière suivante : si p est un nombre premier et si m et n sont des entiers strictement positifs tels que m ≡ n mod (p – 1) alors, pour tout entier a :
$a^{m}\equiv a^{n}{\pmod {p}}$
En effet, modulo p, les deux membres sont congrus à 0 si a est divisible par p, et s'il ne l'est pas, alors a$^{n–m}$ = (a$^{p–1}$)$^{(n–m)/(p–1)}$ ≡ 1$^{(n–m)/(p–1)}$ = 1. Sous cette forme, le théorème fonde l'algorithme de chiffrement RSA.
Le petit théorème de Fermat est généralisé par le théorème d'Euler : pour tout entier naturel non nul n et tout entier a premier avec n, on a
$a^{\varphi (n)}\equiv 1{\pmod {n}}$
où φ(n) désigne l'indicatrice d'Euler de n, égale à l'ordre du groupe des unités de l'anneau ℤ/nℤ. Si n est un nombre premier, alors φ(n) = n – 1 et l'on retrouve le petit théorème de Fermat.
Il se généralise de même à tout corps fini donc à tout quotient de l'anneau des entiers d'un corps de nombres par un idéal premier.