Número de clase cuadrático imaginario
Escriba un d libre de cuadrados y obtenga el número de clase exacto de Q(√−d): para 23 el discriminante es −23 y el número de clase es 3, y para 1, los racionales gaussianos, es 1. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- D
- 23
- Discriminante
- -23
- Número de clases
- 3
Esta calculadora recibe un entero positivo libre de cuadrados d y obtiene el número de clase del campo Q(sqrt(-d)). Primero determina el discriminante fundamental y luego cuenta de manera determinista sus formas cuadráticas binarias primitivas, positivas y reducidas. El resultado es exacto y reproducible, e incluye el discriminante utilizado para facilitar la comprobación de ejercicios, tablas y experimentos de teoría de números sin consultar bases de datos remotas.
Del radicando libre de cuadrados al discriminante
La entrada d identifica Q(sqrt(-d)), pero el discriminante de las formas no siempre es -d. Si d es congruente con 3 módulo 4, el discriminante fundamental es -d; en los demás casos libres de cuadrados es -4d. La distinción evita contar un orden en vez del anillo de enteros completo.
La calculadora aplica la regla y muestra el discriminante junto al número de clase. d debe ser positivo y ningún cuadrado primo puede dividirlo: 5 es válido, mientras 12 no lo es porque 4 lo divide. Rechazar valores no libres de cuadrados mantiene una descripción canónica del campo. El límite publicado garantiza una ejecución rápida y previsible en el navegador.
Cómo producen el número de clase las formas reducidas
Para un discriminante fundamental negativo D, el grupo de clases de ideales corresponde a las clases de formas ax^2+bxy+cy^2 primitivas, enteras, positivas, con b^2-4ac=D. Cada clase posee un representante reducido bajo la convención habitual. El algoritmo enumera a y b dentro de cotas finitas, deduce c y conserva |b|<=a<=c.
En las fronteras |b|=a o a=c solo admite b no negativo, evitando duplicados, y comprueba gcd(a,b,c)=1. La cota a<=sqrt(|D|/3) asegura la terminación. Por tanto, contar los representantes restantes da directamente el número de clase, sin aproximaciones, muestreo aleatorio, tablas externas ni heurísticas.
Qué puede hacer con ella
Comprobar un ejercicio
Verifique una enumeración manual de formas positivas reducidas para un campo dado.
Crear una tabla pequeña
Procese radicandos libres de cuadrados y conserve el discriminante y el conteo exacto.
Probar otra implementación
Compare resultados con código basado en ideales, fórmulas analíticas u otra convención.
Preguntas frecuentes
¿Qué entradas se aceptan?
Un entero positivo libre de cuadrados d entre 1 y 1,000,000,000.
¿Por qué debe ser libre de cuadrados?
Así d describe el campo de forma canónica y permite elegir su discriminante fundamental.
¿Qué discriminante se usa?
Se usa -d si d es 3 módulo 4 y -4d en caso contrario.
¿Qué se cuenta exactamente?
Formas cuadráticas binarias enteras, primitivas, positivas y reducidas del discriminante fundamental.
¿Es aproximado el resultado?
No. La enumeración finita y las pruebas de divisibilidad emplean enteros exactos.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"d": 23
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.class_number_imaginary",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_d | 1000000000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Cómo interpretar y comprobar el resultado
Un valor uno significa que todo ideal fraccionario es principal; valores mayores miden el fallo de generación principal, no de factorización única de ideales. El método enumera formas directamente y está pensado para entradas moderadas, no para cálculos de investigación gigantes. La respuesta contiene d, el discriminante fundamental y class_number. Como controles conocidos, d=1 tiene número de clase uno y d=23, discriminante -23, tiene tres. La API cuesta $0.002 por solicitud y el navegador ejecuta localmente el mismo cálculo puro. Al no usar red, reloj ni azar, una entrada repetida produce el mismo JSON.
Preguntas técnicas
¿Cuánto cuesta una solicitud API?
Cada solicitud cuesta $0.002; la calculadora del navegador es gratuita.