Test de primalité de Mersenne avec Lucas-Lehmer
Indiquez un exposant premier et le test de Lucas–Lehmer vous dit si 2^p − 1 est premier : pour 31, il fait 29 étapes, aboutit à un résidu nul et confirme le premier 2147483647. Vous voyez le nombre exact, pas un simple oui ou non. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Puissance (W)
- 31
- Nombre de Mersenne
- 2147483647
- Itérations
- 29
- Reste final
- 0
Ce vérificateur reçoit un exposant premier p et détermine si 2^p - 1 est un nombre premier de Mersenne. Il applique le test déterministe de Lucas-Lehmer et fournit le nombre exact, le nombre d’itérations et le résidu final. L’exposant est validé en premier, car un exposant composé ne peut produire aucun premier de Mersenne. Vous distinguez ainsi une requête incorrecte d’un test valide dont le résultat est composé.
Comment le test de Lucas–Lehmer tranche
Un nombre de Mersenne s'écrit 2^p − 1 et ne peut être premier que si l'exposant est lui-même premier. C'est pourquoi le vérificateur confirme d'abord que l'exposant est premier et refuse un exposant composé au lieu de répondre faux. Il construit ensuite le nombre exact et déroule la suite de Lucas–Lehmer : partir de 4, élever au carré, retrancher 2 et ne garder que le reste de la division par le nombre de Mersenne. Après l'exposant moins 2 étapes, le nombre est premier exactement quand le dernier reste vaut zéro. Pour l'exposant 31, cela donne 29 étapes, un résidu final de 0 et le premier 2147483647.
Quand l'utiliser et les pièges à éviter
Servez-vous-en pour confirmer un exposant candidat, contrôler une table de premiers de Mersenne connus ou montrer à des élèves comment des carrés successifs avec reste aboutissent à zéro ou non. Deux confusions reviennent souvent. Un exposant premier ne garantit pas un résultat premier : une réponse fausse est normale et signifie seulement que le nombre de Mersenne est composé. Une erreur est autre chose : l'exposant n'est pas premier, n'est pas entier ou sort de la plage de 2 à 10 000. L'exposant 2 est un cas particulier qui donne 3, premier, sans aucune étape.
Choisissez et validez l’exposant
Saisissez un entier p compris entre 2 et 10,000. Avant de construire le nombre, il vérifie par divisions déterministes que p est premier. Il s’agit d’une condition mathématique indispensable : lorsque p est composé, 2^p - 1 possède une factorisation algébrique.
Cette entrée provoque donc une erreur, et non un résultat faux. Faux signifie qu’un exposant premier a été testé correctement et que son nombre de Mersenne est composé. Les décimales, champs absents, tableaux, textes non numériques et valeurs hors limites sont également refusés clairement.
Comprenez le calcul de Lucas-Lehmer
M est premier si et seulement si le résidu final vaut zéro. Aucun arrondi, témoin probabiliste, réseau ou hasard n’intervient. La réponse expose le nombre décimal exact, la décision, la méthode, le nombre d’itérations et le résidu, afin que vous puissiez reproduire et contrôler le calcul.
Cas d’usage
Contrôler un exposant candidat
Vérifiez si le nombre associé à un exposant premier satisfait exactement le critère de Lucas-Lehmer.
Enseigner la récurrence modulaire
Illustrez comment les carrés modulaires successifs aboutissent à un résidu nul ou non nul.
Créer des jeux de test stables
Produisez des valeurs, nombres d’itérations et résidus reproductibles pour une autre implémentation.
Questions fréquentes
Que se passe-t-il si p est composé ?
La requête renvoie une erreur de saisie, car p doit être premier.
Un exposant premier garantit-il un premier de Mersenne ?
Non. Cette condition est nécessaire mais insuffisante ; le résidu fournit la décision finale.
Le test est-il probabiliste ?
Non. Lucas-Lehmer est déterministe pour les nombres de Mersenne à exposant premier.
2^31 − 1 est-il un premier de Mersenne ?
Oui. Avec l'exposant 31, le vérificateur forme 2147483647, effectue 29 étapes de Lucas–Lehmer et termine sur un résidu de 0, ce qui prouve que le nombre est premier.
Que signifie un résultat faux ?
Il signifie qu'un exposant premier a été testé correctement et que son nombre de Mersenne est composé. C'est un résultat normal, contrairement à une erreur, qui n'apparaît que si l'exposant n'est pas un premier valide dans la plage.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/numth/mersenne-prime-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"p":31}'const res = await fetch("https://api.kit.forhosting.com/numth/mersenne-prime-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"p": 31
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/mersenne-prime-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"p": 31
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/mersenne-prime-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"p":31}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"p":31}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/mersenne-prime-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"p": 31
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.mersenne_prime_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
min_p | 2 |
max_p | 10000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Choisissez et validez l’exposant
Le vérificateur accepte le champ p et l’alias exponent, y compris une chaîne entière.
Comprenez le calcul de Lucas-Lehmer
Une fois p validé, le service forme M = 2^p - 1 avec une arithmétique BigInt exacte. Pour un premier impair, il part de s = 4 puis remplace s par son carré moins 2, modulo M, exactement p - 2 fois. Le cas p = 2 donne M = 3 sans itération et avec un résidu nul.
Interprétez et exploitez le résultat
Vrai indique un résidu final nul ; faux signifie que p est premier mais que 2^p - 1 est composé. Il ne recherche pas sans limite : une requête traite un seul exposant dans la plage publiée. Le résultat étant immuable, mettez-le en cache pour les traitements volumineux. is_prime concerne le nombre de Mersenne, pas l’exposant déjà validé. Les champs mersenne et final_residue restent des chaînes décimales afin d’éviter toute perte de précision JSON. Le navigateur exécute la même logique déterministe que l’API, tandis qu’un appel automatisé coûte $0.002.
Questions techniques
Pourquoi renvoyer le nombre et le résidu comme chaînes ?
Ils peuvent dépasser la précision entière de JSON ; les chaînes conservent chaque chiffre.
Quel est le prix d’un contrôle par API ?
Chaque requête coûte $0.002. La version navigateur emploie le même calcul pur.