Comprobador suma de dos cuadrados
El 65 es suma de dos cuadrados, 1² + 8², mientras que el 3 y el 7 nunca lo son. Escriba un entero y obtendrá un sí o un no, una pareja válida y los factores primos que aplica la regla de Fermat. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Un entero no negativo es suma de dos cuadrados enteros cuando existen enteros a y b tales que n es igual a a al cuadrado más b al cuadrado. Cero es 0² + 0², cinco es 1² + 2², trece es 2² + 3² y sesenta y cinco es 1² + 8² (o 4² + 7²); tres y siete no pueden escribirse así. El teorema clásico de Fermat decide la pertenencia solo con la factorización prima: n funciona si y solo si todo primo congruente con tres módulo cuatro aparece con exponente par. La aritmética es totalmente determinista —sin red, sin azar y sin reloj—, de modo que deberes, oráculos de concurso y pipelines de producción siempre coinciden.
Qué significa «suma de dos cuadrados» y cómo lo decide Fermat
Los enteros a y b forman una representación de n cuando a al cuadrado más b al cuadrado es igual a n. Los signos y el orden no cambian la identidad subyacente: si (a, b) funciona, también lo hacen (±a, ±b) y (±b, ±a), así que este comprobador informa un par no negativo con a menor o igual que b cuando existe representación. Cero y uno tienen éxito de inmediato (0²+0² y 0²+1²).
Dos es 1²+1²; todo primo congruente con uno módulo cuatro es a su vez suma de dos cuadrados; los primos congruentes con tres módulo cuatro nunca lo son. El teorema completo multiplica estos hechos: escriba n como producto de potencias primas; si algún primo p ≡ 3 (mod 4) tiene exponente impar, n queda bloqueado y no puede ser suma de dos cuadrados; si todo tal primo tiene exponente par (incluido el caso vacío cuando no aparece ninguno), n sí puede.
De forma equivalente, tras quitar todos los factores cuadrados y los de dos y de primos ≡ 1 mod 4, nada de la forma 4k+3 puede quedar con potencia impar.
Dónde encajan las comprobaciones de suma de dos cuadrados
Los estudiantes encuentran las sumas de dos cuadrados al aprender aritmética modular, residuos cuadráticos y teoría algebraica de números temprana: los primos de obstrucción ≡ 3 mod 4 son un primer puente entre factorización y representación diofántica. Los docentes pueden generar claves de respuestas para hojas que pregunten si cinco, trece, veinticinco o sesenta y cinco es suma de dos cuadrados, y contrastarlos con tres, siete u once sin confiar en calculadoras opacas.
La práctica de concursos y los write-ups de CTF suelen necesitar un oráculo rápido sin conexión para «¿puede n escribirse como a²+b²?» y verificar soluciones sin trozos de OEIS codificados a mano. Los autores de bibliotecas usan el mismo contrato para pruebas de propiedades de ayudas de factorización y normas de enteros gaussianos.
Mantenga n dentro del límite publicado para que la división de prueba y la búsqueda opcional de representación sigan interactivas; para enteros de tamaño criptográfico necesita factorización multiprecisión, no esta capacidad parse ligera.
Qué puede hacer con ella
Comprobaciones de dos cuadrados en concursos y CTF
Verifique con rapidez la pertenencia a suma de dos cuadrados al resolver problemas de programación o capture-the-flag sin tablas estáticas de enteros representables.
Preguntas frecuentes
¿Cuándo es n suma de dos cuadrados?
Un entero no negativo n es igual a a² + b² para enteros a y b si y solo si todo primo congruente con 3 módulo 4 tiene exponente par en la factorización prima de n. Cero, uno, dos, cinco, trece y sesenta y cinco tienen éxito; tres y siete fallan.
¿Qué ocurre si n es negativo?
El teorema clásico de suma de dos cuadrados se enuncia para enteros no negativos; un n negativo está fuera de dominio y no se cobra.
¿Cuánto cuesta el comprobador de suma de dos cuadrados?
La herramienta del navegador es gratuita y se ejecuta en local.
¿El algoritmo es aleatorio?
No. Usa factorización determinista por división de prueba, comprobaciones exactas de paridad en primos ≡ 3 mod 4 y una búsqueda exacta de una representación a ≤ b cuando hay pertenencia. El mismo n siempre produce el mismo indicador y los mismos factors.
¿El 65 es suma de dos cuadrados?
Sí: 65 es 1² + 8², y también 4² + 7². Sus factores primos son 5 y 13, y ambos dejan resto 1 al dividirlos entre 4, así que nada impide la representación.
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/sum-two-squares-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":65}'const res = await fetch("https://api.kit.forhosting.com/numth/sum-two-squares-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 65
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/sum-two-squares-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 65
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/sum-two-squares-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":65}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":65}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/sum-two-squares-check", 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
{
"n": 65
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.sum_two_squares_check",
"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.
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
Esta capacidad factoriza n, enumera los primos bloqueantes de la forma 4k+3 con multiplicidad impar, devuelve un indicador is_sum_of_two_squares claro y, cuando la respuesta es sí, aporta una representación no negativa a ≤ b. Explórela gratis en el navegador o llame a la API a $0.002 por petición exitosa cuando los scripts necesiten un veredicto reproducible de sí o no sin un sistema de álgebra computacional.
Qué significa «suma de dos cuadrados» y cómo lo decide Fermat
Esta herramienta nunca muestrea ni aproxima: factoriza n una vez por división de prueba, examina cada potencia prima por la condición 4k+3 de exponente impar, rellena blocking_primes cuando la respuesta es no y solo entonces busca un par concreto a²+b² cuando el criterio dice sí, de modo que la pertenencia de libro y el booleano siempre coinciden.
Contrato de entrada, forma de la respuesta y errores
Un n negativo está explícitamente fuera de dominio: el enunciado clásico es para enteros no negativos, y la capacidad lo señala con un mensaje claro en lugar de inventar un éxito falso. Envíe un cuerpo JSON con un único campo obligatorio n: un número entero de al menos cero y como máximo un billón (diez a la doce). Se aceptan los alias number y value para el mismo campo, de modo que formularios y cadenas de consulta reutilicen un solo contrato. En caso de éxito la respuesta incluye n aceptado, is_sum_of_two_squares como booleano, factors como lista ordenada de objetos con prime y exponent (vacía para cero y uno), blocking_primes como lista ascendente de primos ≡ 3 mod 4 con exponente impar, criterion como reescritura breve de la regla de Fermat y, cuando el booleano es verdadero, un objeto representation con enteros no negativos a y b tales que a² + b² es igual a n y a ≤ b. La validación fallida —n ausente, no entero, fracción, valor negativo o por encima del límite publicado— devuelve invalid_input y nunca se cobra. El precio es un fijo $0.002 por petición exitosa (unidad item con precio unitario marginal cero). Los enteros que fallan el criterio siguen devolviendo respuesta exitosa con is_sum_of_two_squares false y una lista blocking_primes no vacía; solo las violaciones de dominio son errores, lo que simplifica los scripts de corrección cuando los alumnos envían tres, siete o veintiuno.
Dónde encajan las comprobaciones de suma de dos cuadrados
En esta página el trabajo se ejecuta por completo en su navegador; a través de la API cada consulta exitosa cuesta $0.002, la validación fallida no se cobra y no se almacena nada tras la respuesta. Las landings hermanas de suma de los primeros n cuadrados o números felices (sumas de cuadrados de dígitos) responden a intenciones de búsqueda distintas: esta página apunta a quien busca específicamente la prueba de pertenencia de dos cuadrados de Fermat y un indicador is_sum_of_two_squares claro.
Casos de integración
Deberes: ¿puede n escribirse como a² + b²?
Dé a los alumnos un entero y compruebe su factorización manual y la pertenencia sí/no frente a una API determinista o al resultado gratuito del navegador con los primos bloqueantes listados.
Enseñar el criterio 4k+3 de Fermat
Muestre que los primos ≡ 1 mod 4 y productos como 65 tienen éxito mientras fallan los primos ≡ 3 mod 4 con exponente impar (3, 7, 11, 21), con factors y blocking_primes para la pizarra.
Preguntas técnicas
¿Una respuesta falsa sigue devolviendo factors?
Sí. Los enteros no representables tienen éxito con is_sum_of_two_squares false, la lista completa de factors y blocking_primes nombrando cada primo ≡ 3 mod 4 con exponente impar. Solo las violaciones de dominio son errores.