Calculateur du symbole de Jacobi
Le symbole de Jacobi (5/13) vaut −1, ce qui montre que 5 n’est pas un carré modulo 13. Saisissez un entier et un dénominateur impair positif pour obtenir −1, 0 ou +1 par la réciprocité quadratique, sans factoriser le dénominateur. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Premier texte
- 5
- N
- 13
- Valeur Jacobi
- -1
- Symbole
- -1
Le symbole de Jacobi (a/n) étend le symbole de Legendre des modules premiers à tout entier positif impair n. Il renvoie 0 lorsque a et n partagent un facteur commun supérieur à un, et sinon +1 ou −1 selon le produit des symboles de Legendre sur les facteurs premiers de n — sans exiger de factoriser n d’abord. Ce calculateur implémente l’algorithme classique de réciprocité quadratique : retirer les puissances de deux du numérateur, appliquer la loi supplémentaire de (2/n), échanger avec le signe de réciprocité lorsque les deux sont 3 mod 4, et réduire.
Ce que signifie le symbole de Jacobi (a/n)
Pour un entier positif impair n et tout entier a, le symbole de Jacobi (a/n) est défini de façon multiplicative à partir du symbole de Legendre. Lorsque n est un premier impair p, Jacobi coïncide avec Legendre : (a/p) vaut 0 si p divise a, +1 si a est un résidu quadratique non nul modulo p, et −1 si a est un non-résidu quadratique modulo p. Lorsque n se factorise en produit de premiers impairs, (a/n) est le produit des symboles de Legendre de a en ces premiers (avec multiplicité).
Par conséquent (a/n) = 0 précisément lorsque gcd(a, n) est supérieur à un ; si le symbole vaut −1 alors a n’est pas un carré mod n ; mais s’il vaut +1, a peut encore ne pas être un carré lorsque n est composé — Jacobi est donc une condition nécessaire de residuosité quadratique, pas toujours suffisante.
La valeur est complètement multiplicative en les deux arguments (avec les réserves habituelles sur le domaine de n), et les lois de la réciprocité quadratique donnent une voie efficace pour l’évaluer : réduire a modulo n en un résidu non négatif, extraire les facteurs de deux avec (2/n) = (−1)^((n²−1)/8), et lorsque les deux parties impaires courantes sont 3 mod 4 inverser le signe à chaque échange.
Cette procédure ne factorise jamais n et se termine en un nombre logarithmique d’étapes arithmétiques, c’est pourquoi calculs à la main et implémentations machine partagent le même algorithme de manuel. Les numérateurs négatifs sont réduits au système de résidus standard avant la boucle, de sorte que (−1/n) suit automatiquement la loi supplémentaire (−1)^((n−1)/2).
Cette capacité refuse n pair et n inférieur à 1 car le symbole de Jacobi classique n’est pas défini pour ces dénominateurs ; le symbole de Kronecker étend la notion mais est un autre outil avec une autre intention de recherche.
Limites, performances et cas d’emploi
L’algorithme de réciprocité effectue une quantité constante d’arithmétique modulaire par bit des entrées, donc le coût croît avec la longueur en bits de n plutôt qu’avec une factorisation par essai de n. Les enseignants s’en servent pour vérifier les calculs manuels de (a/n) avant que les élèves rendent des preuves.
Les développeurs l’intègrent dans des tests de propriétés pour l’échafaudage de type Solovay–Strassen, dans des solveurs de puzzles et CTF qui ont besoin d’un caractère quadratique rapide, et dans des pipelines qui ne doivent pas réimplémenter la réciprocité dans chaque langage.
Cas d’usage
Vérifier devoirs et réponses de concours (a/n)
Élèves et coachs peuvent vérifier les calculs du symbole de Jacobi par réciprocité quadratique sans suivre à la main chaque changement de signe ni faire confiance à une calculatrice qui perd la précision entière.
Échafauder tests de primalité et de residuosité
Les scripts qui ont besoin d’une étape Jacobi déterministe pour des démos Solovay–Strassen, des contrôles du critère d’Euler ou des assertions de classes de résidus peuvent appeler ceci au lieu d’embarquer leur propre boucle BigInt.
Questions fréquentes
Qu’est-ce que le symbole de Jacobi ?
C’est une fonction à valeurs entières (a/n) pour n positif impair qui généralise le symbole de Legendre. Ce calculateur renvoie −1, 0 ou +1 comme jacobi (et la même valeur comme symbol).
Pourquoi n doit-il être impair et au moins 1 ?
Le symbole de Jacobi classique n’est défini que pour des dénominateurs positifs impairs.
(a/n)=1 signifie-t-il que a est un carré mod n ?
Pas toujours. Si le symbole vaut −1, a n’est pas un résidu quadratique mod n. S’il vaut +1, a peut encore ne pas être un carré lorsque n est composé. Quand n est premier, Jacobi égale Legendre et +1 signifie bien un carré non nul.
Comment fonctionne le calculateur du symbole de Jacobi ?
Il utilise la réciprocité quadratique sur BigInt : réduire a mod n, retirer les facteurs de 2 avec la loi de (2/n), échanger avec un changement de signe lorsque les deux parties sont 3 mod 4, et terminer lorsque la chaîne de restes atteint 0.
Le calculateur du symbole de Jacobi est-il gratuit ?
L’outil navigateur est gratuit et s’exécute en local.
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/jacobi-symbol \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":"5","n":"13"}'const res = await fetch("https://api.kit.forhosting.com/numth/jacobi-symbol", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": "5",
"n": "13"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/jacobi-symbol",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": "5",
"n": "13"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/jacobi-symbol", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":"5","n":"13"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":"5","n":"13"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/jacobi-symbol", 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
{
"a": "5",
"n": "13"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.jacobi_symbol",
"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_digits | 2048 |
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
Utilisez-le pour les devoirs de théorie des nombres, les vérifications de concours, l’échafaudage de tests de primalité et les étapes d’API déterministes qui nécessitent un (a/n) exact sans flottants ni scripts ad hoc.
Comment appeler l’API et lire le résultat
En cas de succès la réponse renvoie a et n comme chaînes décimales normalisées, jacobi comme l’entier −1, 0 ou 1, et symbol comme la même valeur en chaîne pour les clients qui préfèrent des champs texte. Envoyez un corps JSON avec deux champs obligatoires : a (le numérateur) et n (le dénominateur positif impair). Chacun peut être une chaîne d’entier décimal ou un nombre JSON ; préférez les chaînes lorsque les valeurs dépassent la plage d’entiers sûre de JavaScript. Les alias numerator ou top pour a, et denominator, modulus ou m pour n, sont acceptés afin que formulaires et clients manuscrits partagent un même contrat. Vérifications classiques : a=5 et n=13 donne jacobi −1 ; a=2 et n=15 donne +1 ; a=1001 et n=9907 donne −1 ; a=0 et n=9 donne 0 ; a=1 et tout n impair donne +1. Une validation échouée — champs manquants, non-entiers, fractions, n pair, n inférieur à 1, ou valeur plus longue que la limite de chiffres publiée — renvoie invalid_input et n’est jamais facturée. Le tarif est un forfait $0.002 par requête réussie (unité à prix marginal nul).
Limites, performances et cas d’emploi
Cette capacité plafonne a et n à 2048 chiffres décimaux chacun — assez pour problèmes de concours, démos crypto en classe et devoirs multiprécision — tout en restant assez petit pour que le BigInt pur en Worker reste interactif. Si vous avez besoin du symbole de Kronecker pour dénominateurs pairs ou nuls, d’une bibliothèque complète de réseaux de classes de résidus, ou de primitives crypto en temps constant, utilisez une pile multiprécision dédiée ; cet outil léger de parse est le calculateur et l’étape API partagés pour l’évaluation exacte de Jacobi. Associez-le à des outils d’exponentiation modulaire ou d’inverse lorsqu’un flux a besoin de la boîte à outils modulaire plus large ; ce endpoint ne répond qu’à la question de Jacobi pour garder l’intention de recherche claire et la réponse minimale.
Cas d'intégration
CTF, puzzles et pipelines de théorie des nombres
Auteurs et solveurs de défis qui ont besoin d’un (a/n) exact pour n impair obtiennent une API stable et un outil gratuit dans le navigateur avec le même noyau, avec invalid_input clair lorsque n est pair.