Formas cuadráticas binarias reducidas por discriminante
Enumera las formas reducidas, primitivas y definidas positivas ax² + bxy + cy² de un discriminante negativo: −23 da tres formas, [1, 1, 6], [2, −1, 3] y [2, 1, 3], así que su número de clases es 3. Solo aritmética entera exacta. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Discriminante
- -23
- Cantidad
- 3
Esta calculadora enumera los representantes reducidos canónicos de las formas cuadráticas binarias integrales, primitivas y definidas positivas con un discriminante negativo elegido. Introduzca un discriminante válido y obtendrá cada terna de coeficientes [a, b, c], el total y el discriminante en el resultado. El cálculo es exacto, determinista y emplea aritmética entera. Resulta útil para comprobar números de clase, preparar ejercicios, explorar clases de equivalencia y validar cálculos manuales sin instalar álgebra simbólica ni consultar una base matemática remota.
Qué enumera la calculadora
Una forma cuadrática binaria es una expresión ax² + bxy + cy² con coeficientes enteros. Su discriminante es D = b² − 4ac. Si D es negativo y a es positivo, la forma es definida positiva.
La calculadora devuelve formas primitivas, es decir, gcd(a, b, c) = 1, y elige representantes reducidos que cumplen |b| ≤ a ≤ c. En los límites aplica la convención b ≥ 0 cuando |b| = a o a = c. Estas condiciones producen una lista finita y un representante estándar por cada clase de equivalencia propia.
Cada resultado aparece como coeficientes separados y mediante la notación [a, b, c]. El total indicado coincide con el número de formas primitivas reducidas encontradas para el discriminante proporcionado.
Cómo elegir y validar un discriminante
Introduzca un entero negativo congruente con 0 o 1 módulo 4. La condición es necesaria porque b² siempre vale 0 o 1 módulo 4. Por ejemplo, −23 es válido porque es 1 módulo 4, mientras que −22 no es un discriminante cuadrático.
Se rechazan cero, valores positivos, números fraccionarios o inseguros y cifras fuera del límite publicado. El discriminante no tiene que ser fundamental: el filtro de formas primitivas sigue aplicándose. Algunos discriminantes válidos no admiten representantes primitivos; en ese caso se devuelve una lista vacía y un total de cero, no un error.
Por qué la enumeración es exacta y reproducible
El algoritmo deriva directamente de la teoría de reducción. Para una forma reducida definida positiva, las desigualdades implican a ≤ √(|D|/3), lo que limita el bucle exterior. Para cada a posible se prueban los enteros b entre −a y a, se respeta la paridad necesaria y se calcula c mediante (b² − D)/(4a).
Solo se conserva un candidato si c es entero, a ≤ c, se cumple la convención de signo del límite y los tres coeficientes tienen máximo común divisor uno. Las pruebas de pertenencia usan aritmética exacta con enteros seguros. Los resultados se ordenan por a creciente y después por b creciente.
Qué puede hacer con ella
Comprobar un ejercicio de número de clase
Compare una lista obtenida a mano con una enumeración completa y ordenada de forma coherente.
Explorar discriminantes
Observe cómo cambian las ternas y los totales entre discriminantes negativos fundamentales y no fundamentales.
Preguntas frecuentes
¿Qué entradas son válidas?
Use un entero negativo congruente con 0 o 1 módulo 4 y dentro del intervalo publicado.
¿Qué significa que una forma sea primitiva?
Una forma [a, b, c] es primitiva si el máximo común divisor de sus tres coeficientes es uno.
¿Qué significa reducida en este contexto?
La salida cumple |b| ≤ a ≤ c, y b es no negativo cuando se da cualquiera de las igualdades límite.
¿Se incluyen duplicados equivalentes?
No. Las condiciones de reducción eligen un representante por cada clase de equivalencia propia.
¿Puede un discriminante válido no devolver formas?
Sí. Un discriminante válido no fundamental puede carecer de representantes primitivos; se devuelve una lista vacía, no un error.
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/reduced-binary-forms \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"discriminant":-23}'const res = await fetch("https://api.kit.forhosting.com/numth/reduced-binary-forms", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"discriminant": -23
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/reduced-binary-forms",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"discriminant": -23
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/reduced-binary-forms", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"discriminant":-23}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"discriminant":-23}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/reduced-binary-forms", 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
{
"discriminant": -23
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.reduced_binary_forms",
"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
min_discriminant | -10000000 |
max_discriminant | -3 |
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 elegir y validar un discriminante
En la API también puede usar el alias breve d, aunque discriminant resulta más claro en código guardado.
Por qué la enumeración es exacta y reproducible
No se utiliza red, azar, reloj, base de datos ni tabla oculta; funciona igual en el navegador y mediante la API por $0.002 por solicitud.
Casos de integración
Crear datos de prueba exactos
Genere datos deterministas para clases de teoría de números, scripts y pruebas de regresión.
Preguntas técnicas
¿Cuánto cuesta?
Puede ejecutarlo gratis en el navegador de esta página o pagar $0.002 por solicitud de API.