ForHosting KIT · Outils pour développeurs

Vérificateur de pseudopremiers de Fermat pour toute base

Le vérificateur de pseudopremiers de Fermat reçoit un entier composé n et une base a, calcule exactement le reste de a élevé à n moins un modulo n, puis indique si ce reste vaut un.

● BetaGratuit · dans votre navigateur
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt

Un composé qui réussit est un pseudopremier de Fermat pour la base choisie : il se comporte comme un nombre premier dans ce test précis sans l’être. Le plus grand commun diviseur est également fourni pour faciliter l’analyse et l’explication du résultat.

Ce que signifie réellement un résultat positif

Le petit théorème de Fermat affirme que si n est premier et que a n’est pas divisible par n, alors a élevé à la puissance n moins un laisse un reste égal à un modulo n. La réciproque n’est pas garantie. Certains entiers composés produisent eux aussi un reste égal à un pour certaines bases ; on les appelle des pseudopremiers de Fermat pour ces bases. Ce vérificateur exige délibérément que n soit composé, contrôle d’abord cette condition, puis évalue exactement la congruence. Lorsque passes_fermat_test et is_fermat_pseudoprime valent vrai, le composé fourni a trompé le test de Fermat pour cette base précise. Cela ne signifie pas que n est premier, probablement premier ou pseudopremier pour toutes les bases. La base fait partie intégrante de l’affirmation et doit toujours accompagner le résultat. Le reste renvoyé constitue la preuve arithmétique directe : un signifie que le test réussit, toute autre valeur qu’il échoue. Le plus grand commun diviseur aide en outre à reconnaître les bases premières avec n et les relations de facteur déjà visibles.

Comment le calcul reste exact

Les deux entrées sont des chaînes décimales afin que les entiers dépassant la plage numérique sûre de JavaScript ne soient pas arrondis avant le calcul. La plage admise s’arrête au plus grand entier non signé sur 64 bits, ce qui fixe une limite claire et vérifiable au contrôle de primalité. Avant le test de Fermat, le vérificateur applique une procédure déterministe de Miller–Rabin avec un ensemble de témoins suffisant sur toute cette plage. Un nombre premier détecté provoque une erreur de saisie : les nombres premiers satisfont le théorème, mais ne peuvent pas être des pseudopremiers par définition. Pour un composé valide, l’exponentiation modulaire emploie les carrés successifs au lieu de construire l’immense valeur a^(n-1). Chaque multiplication est réduite modulo n, ce qui maintient les valeurs intermédiaires bornées et exactes avec BigInt. L’algorithme d’Euclide calcule séparément gcd(a,n). La base doit respecter 2 <= a <= n - 2. Aucun témoin aléatoire, horodatage, appel réseau ou calcul flottant n’influence la réponse ; les mêmes entrées produisent donc toujours la même sortie.

Utilisation pour l’apprentissage et la vérification

Un exemple classique prend n = 341 et la base a = 2. Bien que 341 soit composé, 2^340 est congru à un modulo 341 ; il réussit donc le test et constitue un pseudopremier de Fermat en base deux. Avec une autre base, ce même composé peut échouer, raison pour laquelle un seul test de Fermat ne fournit pas un certificat général de primalité. Dans un cours, la sortie structurée relie directement la définition au reste calculé. Dans une suite de tests, elle permet de conserver des vecteurs connus de pseudopremiers et de non-pseudopremiers sans dépendre d’une bibliothèque mathématique ni de conversions propres à une machine. Pour explorer le phénomène, comparez plusieurs bases autorisées en gardant n fixe et observez l’importance du témoin choisi. Interprétez un résultat vrai comme une démonstration des limites du test de Fermat, jamais comme une autorisation d’accepter le nombre en tant que premier dans un code cryptographique ou sensible. L’API facture $0.002 par paire vérifiée, tandis que le navigateur exécute localement le même calcul déterministe.

Présenter un pseudopremier classique

Vérifiez qu’un composé connu comme 341 satisfait la congruence de Fermat en base 2 et examinez le reste exact.

Préparer des exercices de théorie des nombres

Contrôlez les corrigés qui demandent si un composé donné est pseudopremier pour une base déterminée.

Tester des implémentations arithmétiques

Employez des résultats structurés et déterministes comme vecteurs de référence pour l’exponentiation modulaire ou du code pédagogique de primalité.

Quand n est-il pseudopremier de Fermat en base a ?

Il doit être composé et vérifier que a^(n-1) est congru à 1 modulo n pour la base fournie.

Pourquoi un n premier est-il refusé ?

Les nombres premiers satisfont normalement la congruence de Fermat, mais le terme pseudopremier ne concerne que les composés ; accepter un premier répondrait à une autre question.

Un résultat vrai prouve-t-il que n est premier ?

Non. Le vérificateur a déjà établi que n est composé. Un résultat vrai montre précisément comment ce composé trompe le test pour une base.

Pourquoi saisir n et a sous forme de chaînes ?

Les chaînes décimales préservent chaque chiffre dans l’API et le navigateur, même au-delà de la plage sûre des nombres JavaScript ordinaires.

Quel est le tarif ?

L’API coûte $0.002 par paire vérifiée. L’outil du navigateur effectue localement le même calcul.

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.

POSThttps://api.kit.forhosting.com/numth/fermat-pseudoprime-check

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é.

curl -X POST https://api.kit.forhosting.com/numth/fermat-pseudoprime-check \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"n":"341","a":"2"}'
{
  "n": "341",
  "a": "2"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "numth.fermat_pseudoprime_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.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_digits20
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Consulter la documentation complète du KIT →