Test de primalité de Lucas-Lehmer

De testwiki
Aller à la navigation Aller à la recherche

Modèle:Voir homonymes Le test de primalité de Lucas[1]-Lehmer[2] est une méthode pour tester la primalité d'un entier Modèle:Math, connaissant les facteurs premiers de Modèle:Math

Le test

Un entier Modèle:Math est premier si et seulement si il existe un entier Modèle:Math, strictement compris entre Modèle:Math et Modèle:Math, tel que

an11(modn)

et, pour tout facteur premier[3] Modèle:Math de Modèle:Math,

a(n1)/q≢1(modn).

Exemple

Par exemple, prenons n = 2017, n – 1 = 2016 = 2Modèle:5×3Modèle:2×7.

a = 2 ne convient pas car 2Modèle:Exp ≡ 1 (mod n).

a = 3 non plus car 3Modèle:Exp ≡ 1 (mod n)

Essayons a = 5 (pour calculer rapidement mod n les puissances voulues, on peut utiliser la méthode d'exponentiation rapide et de plus, calculer d'abord 5Modèle:Exp) :

510081≢1(modn) et 52016(1)21(modn)
5672294≢1(modn)
5288138≢1(modn)

Donc 2017 est premier.

Démonstration

La première condition signifie que a est inversible modulo n et que son ordre multiplicatif est un diviseur de n – 1. La seconde signifie que cet ordre est exactement n – 1 (et non un diviseur strict). Par conséquent, l'ordre du groupe des inversibles de l'anneau ℤ/n — qui est a priori inférieur ou égal à n – 1 — est divisible par n – 1 donc égal à n – 1, ce qui signifie que n est premier.

Réciproquement, si n est premier, alors il existe φ(n – 1) racines primitives modulo n, et n'importe laquelle satisfera toutes les conditions du test.

Utilisation

En théorie de la complexité, ce test donne un Modèle:Lien, appelé certificat de Pratt, qui montre que le test de primalité est dans NP[4].

Notes et références

Modèle:Traduction/Référence Modèle:Références

Articles connexes

Modèle:Portail