Nombre de classes quadratique imaginaire
Saisissez un d sans facteur carré et obtenez le nombre de classes exact de Q(√−d) : pour 23, le discriminant vaut −23 et le nombre de classes 3 ; pour 1, les rationnels de Gauss, il vaut 1. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- D
- 23
- Discriminant
- -23
- Nombre de classes
- 3
Ce calculateur reçoit un entier positif sans facteur carré d et détermine le nombre de classes de Q(sqrt(-d)). Il choisit le discriminant fondamental, puis compte de façon déterministe les formes quadratiques binaires primitives, positives et réduites. Le résultat exact indique le discriminant retenu, afin que vous puissiez vérifier exercices, tables et expériences sans base de données distante.
Du radicande au discriminant du corps
L’entrée d définit Q(sqrt(-d)), mais le discriminant n’est pas toujours -d. Si d vaut 3 modulo 4, il est -d; dans les autres cas sans facteur carré, il vaut -4d. Cette distinction évite de compter un ordre plutôt que l’anneau entier.
Le calculateur applique la règle et affiche le discriminant. d doit être positif et aucun carré premier ne doit le diviser : 5 convient, mais 12 non, car 4 le divise. Ce contrôle garantit une description canonique du corps. La borne publiée assure par ailleurs une exécution rapide et prévisible dans votre navigateur.
Pourquoi les formes réduites donnent le résultat
Pour un discriminant fondamental négatif D, les classes d’idéaux correspondent aux classes de formes primitives positives ax^2+bxy+cy^2 telles que b^2-4ac=D. Chaque classe possède un représentant réduit. L’algorithme énumère a et b dans des bornes finies, déduit c et conserve |b|<=a<=c.
Aux frontières |b|=a ou a=c, seul b non négatif est retenu afin d’éviter les doublons; gcd(a,b,c)=1 impose la primitivité. La borne a<=sqrt(|D|/3) garantit l’arrêt. Le comptage est donc exact, sans approximation, hasard, table externe ni heuristique.
Cas d’usage
Vérifier un exercice
Contrôlez une énumération manuelle de formes positives réduites.
Construire une petite table
Traitez des radicandes sans facteur carré et conservez discriminant et total exact.
Tester une autre méthode
Comparez un programme fondé sur les idéaux, des formules ou une autre convention.
Questions fréquentes
Quelles entrées sont admises ?
Un entier positif sans facteur carré d entre 1 et 1,000,000,000.
Pourquoi d doit-il être sans facteur carré ?
Il décrit ainsi le corps canoniquement et détermine son discriminant fondamental.
Quel discriminant est utilisé ?
-d si d vaut 3 modulo 4, sinon -4d.
Que compte le calculateur ?
Les formes quadratiques binaires entières primitives, positives et réduites du discriminant fondamental.
Le résultat est-il approximatif ?
Non, l’énumération finie repose sur des opérations entières exactes.
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/class-number-imaginary \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"d":23}'const res = await fetch("https://api.kit.forhosting.com/numth/class-number-imaginary", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"d": 23
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/class-number-imaginary",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"d": 23
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/class-number-imaginary", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"d":23}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"d":23}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/class-number-imaginary", 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
{
"d": 23
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.class_number_imaginary",
"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_d | 1000000000 |
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
Lire et contrôler la réponse
La valeur un signifie que tout idéal fractionnaire est principal; une valeur supérieure mesure l’absence de générateurs principaux, pas l’échec de la factorisation unique des idéaux. Cette énumération transparente vise des entrées modérées plutôt que des calculs de recherche massifs. La réponse fournit d, le discriminant fondamental et class_number. Parmi les contrôles classiques, d=1 donne un et d=23, de discriminant -23, donne trois. Une requête API coûte $0.002; le navigateur exécute localement le même calcul pur. Sans réseau, horloge ni hasard, une entrée identique restitue toujours le même JSON.
Questions techniques
Quel est le tarif API ?
Chaque requête coûte $0.002; le calcul dans le navigateur est gratuit.