Número de classe quadrático imaginário
Digite um d livre de quadrados e receba o número de classe exato de Q(√−d): para 23 o discriminante é −23 e o número de classe é 3; para 1, os racionais gaussianos, ele vale 1. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- D
- 23
- Discriminante
- -23
- Número de classes
- 3
Esta calculadora recebe um inteiro positivo livre de quadrados d e calcula o número de classe de Q(sqrt(-d)). Ela determina o discriminante fundamental e conta, de modo determinístico, as formas quadráticas binárias primitivas, positivas e reduzidas. O resultado exato inclui o discriminante usado, permitindo que você confira exercícios, tabelas e experimentos de teoria dos números sem consultar uma base remota.
Do radicando livre de quadrados ao discriminante
A entrada d identifica Q(sqrt(-d)), mas o discriminante das formas nem sempre é -d. Se d for congruente a 3 módulo 4, o discriminante fundamental será -d; nos demais casos será -4d. Essa distinção impede contar uma ordem no lugar do anel completo de inteiros.
A calculadora aplica a regra e apresenta o discriminante junto ao número de classe. d deve ser positivo e nenhum quadrado primo pode dividi-lo: 5 é válido, enquanto 12 não é, pois 4 o divide. Rejeitar entradas que não sejam livres de quadrados mantém uma descrição canônica do campo. O limite informado preserva uma execução rápida e previsível no navegador.
Como as formas reduzidas fornecem o número de classe
Para um discriminante fundamental negativo D, o grupo de classes de ideais corresponde às classes de formas ax^2+bxy+cy^2 primitivas, inteiras e positivas com b^2-4ac=D. Cada classe tem um representante reduzido pela convenção usual. O algoritmo enumera a e b em limites finitos, deduz c e mantém |b|<=a<=c.
Nas fronteiras |b|=a ou a=c, aceita apenas b não negativo para evitar duplicatas e verifica gcd(a,b,c)=1. O limite a<=sqrt(|D|/3) garante o término. Assim, a contagem fornece diretamente o número de classe, sem aproximação, amostragem aleatória, tabela externa ou heurística.
Casos de uso
Conferir um exercício
Verifique uma enumeração manual de formas positivas reduzidas de um campo específico.
Montar uma tabela pequena
Processe radicandos livres de quadrados e registre o discriminante e a contagem exata.
Testar outra implementação
Compare com código baseado em ideais, fórmulas analíticas ou outra convenção.
Perguntas frequentes
Quais entradas são aceitas?
Um inteiro positivo livre de quadrados d entre 1 e 1,000,000,000.
Por que d deve ser livre de quadrados?
Assim d descreve o campo de forma canônica e permite selecionar o discriminante fundamental.
Qual discriminante é usado?
Usa-se -d quando d é 3 módulo 4 e -4d nos demais casos.
O que é contado exatamente?
Formas quadráticas binárias inteiras, primitivas, positivas e reduzidas do discriminante fundamental.
O resultado é aproximado?
Não. A enumeração finita e os testes de divisibilidade usam inteiros exatos.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"d": 23
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.class_number_imaginary",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_d | 1000000000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Como interpretar e conferir o resultado
O valor um significa que todo ideal fracionário é principal; valores maiores medem a ausência de geradores principais, não uma falha da fatoração única de ideais. A enumeração direta é indicada para entradas moderadas, e não para cálculos gigantes de pesquisa. A resposta contém d, o discriminante fundamental e class_number. Como testes conhecidos, d=1 tem número de classe um, e d=23, com discriminante -23, tem três. A API custa US$ 0,002 por solicitação; no navegador, você executa localmente o mesmo cálculo puro. Sem rede, relógio ou aleatoriedade, a mesma entrada sempre gera o mesmo JSON.
Perguntas técnicas
Quanto custa uma solicitação API?
Cada solicitação custa US$ 0,002; a calculadora no navegador é gratuita.