Test de primalité de Lucas
Ce vérificateur du test de primalité de Lucas transforme un certificat mathématique compact en un résultat de primalité reproductible.
Lancer gratuitement
Fournissez un entier impair n, un témoin de Lucas proposé et la factorisation première complète de n moins un. Le calculateur valide la factorisation elle-même, évalue les puissances modulaires et les plus grands communs diviseurs requis, puis ne certifie n que si toutes les conditions du théorème de Lucas sont satisfaites. Les chaînes décimales conservent les entiers exacts, y compris au-delà de la plage numérique sûre habituelle de JavaScript.
Préparez un certificat complet
Commencez par l’entier impair que vous souhaitez certifier et factorisez entièrement n moins un. Saisissez n et chaque facteur premier sous forme de chaîne décimale canonique, car les chaînes préservent les valeurs exactes jusqu’à la limite de 64 bits. Chaque facteur apparaît une seule fois avec son exposant positif. Par exemple, pour n = 29, n moins un = 28 = 2 au carré fois 7 : la liste contient donc 2 avec l’exposant 2 et 7 avec l’exposant 1. Vous devez également fournir une base a telle que 1 < a < n. Cette base est le témoin de Lucas proposé. Le vérificateur exige volontairement ce témoin au lieu de le rechercher : la vérification d’un certificat est rapide, bornée et reproductible, tandis qu’une recherche peut durer plus ou moins longtemps selon l’entrée. Si vous ne disposez pas encore d’un témoin, essayez de petites bases avec un outil distinct consacré aux racines primitives, puis soumettez le certificat obtenu. Les espaces, signes, zéros initiaux, notations à virgule flottante, nombres premiers dupliqués, facteurs composés et facteurs manquants sont rejetés plutôt que normalisés silencieusement, ce qui rend le certificat adapté aux journaux d’audit et aux processus automatisés.
Comprenez les deux conditions de Lucas
Le premier calcul vérifie que a élevé à n moins un est congru à 1 modulo n. Il s’agit de la condition familière de Fermat, mais elle ne suffit pas à établir la primalité, car des pseudo-premiers peuvent la satisfaire. La seconde étape, décisive, utilise chaque nombre premier distinct q divisant n moins un. Pour chaque q, le vérificateur calcule a élevé à (n moins un) divisé par q modulo n, retranche un et vérifie que le résultat a pour plus grand commun diviseur 1 avec n. La réussite de tous ces contrôles prouve que l’ordre multiplicatif de a modulo n vaut exactement n moins un. Un élément modulo n ne peut avoir cet ordre que si n est premier : c’est le cœur du théorème de Lucas. Les contrôles renvoyés présentent le résidu modulaire et le plus grand commun diviseur pour chaque q distinct, tandis que l’exposant reste visible dans la factorisation validée. L’exponentiation modulaire emploie des carrés successifs et une arithmétique BigInt exacte ; le calcul ne dépend donc jamais d’un arrondi flottant, de bases aléatoires, d’un service réseau ou d’un niveau de confiance probabiliste.
Interprétez les échecs et le résultat positif
Une réponse positive constitue le résultat d’un certificat de primalité, et non une simple indication de nombre probablement premier. Elle répète n, identifie le témoin accepté, fournit le résidu de Fermat et énumère un contrôle réussi du plus grand commun diviseur pour chaque facteur distinct de n moins un. Conservez l’entrée d’origine avec cette réponse lorsqu’un autre système doit reproduire la preuve. Les échecs sont volontairement précis. Si les puissances des facteurs ne donnent pas exactement n moins un, la factorisation est incomplète ou erronée. Si un facteur indiqué est composé, ou si le même nombre premier apparaît deux fois, la factorisation est mal formée même lorsque son produit brut coïncide. L’échec d’une condition modulaire signifie que la base fournie n’est pas un témoin de Lucas ; il ne permet pas à lui seul de distinguer un n composé d’un nombre premier associé à une base inadéquate. Essayez un autre témoin mathématiquement justifié si la primalité reste attendue. Les entrées sont limitées aux entiers impairs de 3 à 2^64 moins 1, ce qui permet de valider de façon déterministe les facteurs premiers indiqués avant d’évaluer le certificat. Le tarif de l’API est de $0.002 par requête.
Cas d’usage
Vérifiez un nombre premier généré
Contrôlez un candidat et sa factorisation de construction avant d’employer ce nombre premier dans un autre calcul exact.
Reproduisez un certificat
Validez un témoin de Lucas issu d’un article, d’un exercice ou d’un calcul archivé avec des résidus intermédiaires explicites.
Filtrez des données arithmétiques
Rejetez les factorisations incomplètes et les témoins non valides avant d’admettre des nombres déclarés premiers dans un jeu fiable.
Questions fréquentes
Un résultat positif prouve-t-il la primalité ?
Oui. Lorsque la factorisation complète est valide et que toutes les conditions de Lucas réussissent, le résultat constitue une preuve déterministe de primalité pour n.
Pourquoi dois-je fournir une base ?
La base est le témoin porté par le certificat. Son exigence rend la vérification bornée et reproductible, au lieu de lancer une recherche ouverte de racine primitive.
Que signifie l’échec d’une base ?
Cette base n’est pas un témoin valide. Le candidat peut être composé, ou premier avec un autre témoin approprié ; cet échec seul ne permet pas de trancher.
Pourquoi saisir les entiers sous forme de chaînes ?
Les chaînes décimales évitent toute perte de précision pour les entiers dépassant la plage numérique sûre de JavaScript. Les résultats emploient des chaînes pour la même raison.
Comment la factorisation est-elle contrôlée ?
Chaque facteur indiqué subit un test de primalité déterministe, les doublons sont rejetés et le produit de toutes les puissances premières doit valoir exactement n moins un.
Quel est le tarif ?
Chaque requête API coûte $0.002. L’implémentation dans le navigateur utilise le même calcul pur.
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/lucas-primality-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":"29","base":"2","factors":[{"prime":"2","exponent":2},{"prime":"7","exponent":1}]}'const res = await fetch("https://api.kit.forhosting.com/numth/lucas-primality-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": "29",
"base": "2",
"factors": [
{
"prime": "2",
"exponent": 2
},
{
"prime": "7",
"exponent": 1
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/lucas-primality-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": "29",
"base": "2",
"factors": [
{
"prime": "2",
"exponent": 2
},
{
"prime": "7",
"exponent": 1
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/lucas-primality-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":"29","base":"2","factors":[{"prime":"2","exponent":2},{"prime":"7","exponent":1}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":"29","base":"2","factors":[{"prime":"2","exponent":2},{"prime":"7","exponent":1}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/lucas-primality-test", 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
{
"n": "29",
"base": "2",
"factors": [
{
"prime": "2",
"exponent": 2
},
{
"prime": "7",
"exponent": 1
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.lucas_primality_test",
"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
max_bits | 64 |
max_factors | 64 |
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. |