Numero di classi quadratico immaginario
Inserisca un d privo di quadrati e ottenga il numero di classi esatto di Q(√−d): per 23 il discriminante è −23 e il numero di classi è 3, mentre per 1, i razionali gaussiani, vale 1. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- D
- 23
- Discriminante
- -23
- Numero di classi
- 3
Questo calcolatore accetta un intero positivo privo di quadrati d e trova il numero di classi di Q(sqrt(-d)). Determina il discriminante fondamentale e conta in modo deterministico le forme quadratiche binarie primitive, positive e ridotte. Il risultato esatto riporta il discriminante impiegato, così Lei può verificare esercizi, tabelle ed esperimenti senza interrogare database remoti.
Che cos’è il numero di classi
Ogni campo quadratico immaginario Q(√−d) ha un gruppo delle classi di ideali, e il numero di classi ne conta gli elementi. Quando vale 1, ogni ideale frazionario è principale; valori più grandi indicano quanto la fattorizzazione degli ideali si discosta da quella in generatori principali. Il calcolo passa per le forme quadratiche binarie primitive e definite positive: a ciascuna classe di ideali corrisponde una classe di forme con lo stesso discriminante, e ogni classe ha un solo rappresentante ridotto. Per 23 il discriminante è −23 e le forme ridotte sono 3.
Come si calcola ed errori frequenti
Prima si sceglie il discriminante fondamentale: se d diviso per 4 dà resto 3 è −d, altrimenti è −4d. Poi si scorrono i valori di a e b entro un limite finito, si ricava c dal discriminante e si tengono solo le forme in cui il valore assoluto di b non supera a e a non supera c, con b non negativo sui bordi e massimo comun divisore di a, b e c uguale a 1. Il conteggio finale è esatto, senza approssimazioni né tabelle esterne. L’errore più comune è usare −d quando serve −4d, contando così un ordine interno al campo invece dell’anello degli interi; un altro è inserire un numero non privo di quadrati, come 12, che è divisibile per 4.
Dal radicando al discriminante del campo
L’input d identifica Q(sqrt(-d)), ma il discriminante non è sempre -d. Se d è congruo a 3 modulo 4, vale -d; negli altri casi privi di quadrati vale -4d. Questa distinzione evita di contare un ordine invece dell’intero anello degli interi.
Il calcolatore applica la regola e mostra il discriminante. d deve essere positivo e nessun quadrato primo può dividerlo: 5 è valido, 12 no perché è divisibile per 4. Il rifiuto degli altri valori conserva una descrizione canonica del campo. Il limite pubblicato mantiene inoltre rapida e prevedibile l’esecuzione nel browser.
Come le forme ridotte forniscono il numero
Per un discriminante fondamentale negativo D, le classi di ideali corrispondono alle classi delle forme primitive positive ax^2+bxy+cy^2 con b^2-4ac=D. Ogni classe ha un rappresentante ridotto. L’algoritmo enumera a e b entro limiti finiti, ricava c e conserva |b|<=a<=c.
Sui confini |b|=a o a=c accetta solo b non negativo, evitando duplicati, e verifica gcd(a,b,c)=1. Il limite a<=sqrt(|D|/3) garantisce la conclusione. Il conteggio è quindi esatto, senza approssimazioni, casualità, tabelle esterne o euristiche.
Casi d'uso
Verificare un esercizio
Controlli un’enumerazione manuale di forme positive ridotte.
Creare una piccola tabella
Elabori radicandi privi di quadrati salvando discriminante e conteggio esatto.
Provare un altro metodo
Confronti codice basato su ideali, formule analitiche o convenzioni diverse.
Domande frequenti
Quali input sono accettati?
Un intero positivo privo di quadrati d tra 1 e 1,000,000,000.
Perché d deve essere privo di quadrati?
In questo modo descrive canonicamente il campo e ne determina il discriminante fondamentale.
Quale discriminante viene usato?
-d quando d è 3 modulo 4, altrimenti -4d.
Che cosa viene contato?
Le forme quadratiche binarie intere primitive, positive e ridotte del discriminante fondamentale.
Cosa significa un numero di classi uguale a 1?
Significa che ogni ideale frazionario del campo è principale. Valori maggiori misurano quanto la fattorizzazione degli ideali si allontana dall’uso di soli generatori principali; per 23, per esempio, il numero di classi è 3.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"d": 23
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.class_number_imaginary",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_d | 1000000000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Leggere e verificare il risultato
Il valore uno indica che ogni ideale frazionario è principale; valori maggiori misurano la mancanza di generatori principali, non il fallimento della fattorizzazione unica degli ideali. L’enumerazione diretta è pensata per input moderati, non per enormi calcoli di ricerca. La risposta contiene d, il discriminante fondamentale e class_number. Controlli noti sono d=1, con risultato uno, e d=23, discriminante -23, con risultato tre. La richiesta API costa $0.002; nel browser Lei esegue localmente lo stesso calcolo puro. Senza rete, orologio o casualità, lo stesso input restituisce sempre lo stesso JSON.
Domande tecniche
Il risultato è approssimato?
No, l’enumerazione finita usa operazioni intere esatte.
Quanto costa una richiesta API?
Ogni richiesta costa $0.002; il calcolo nel browser è gratuito.