Calculadora del teorema chino del resto
Resuelva congruencias simultáneas de una vez: x ≡ 2 (mod 3), x ≡ 3 (mod 5) y x ≡ 2 (mod 7) tienen 23 como menor solución no negativa, y la respuesta se repite cada 105. Útil para deberes, olimpiadas y solucionarios. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Restos
- 2, 3, 2
- Módulos
- 3, 5, 7
- X
- 23
- Módulo
- 105
- Producto
- 105
- Cantidad
- 3
Usted proporciona dos arrays paralelos; el motor comprueba la coprimalidad, combina las congruencias con el CRT sucesivo usando gcd enteros exactos e inversos modulares, y reporta el representante canónico en el rango de cero a producto menos uno. El cálculo es aritmética entera pura: sin red, sin aleatoriedad y sin reloj, de modo que los mismos arrays siempre producen la misma x.
Qué garantiza el teorema chino del resto para módulos coprimos
El famoso ejemplo de aula, x congruente con 2 módulo 3, x congruente con 3 módulo 5 y x congruente con 2 módulo 7, da x igual a 23 módulo 105, y 23 es la solución no negativa mínima que devuelve esta herramienta. Esta calculadora exige deliberadamente módulos coprimos dos a dos: cuando esa precondición se cumple, la existencia y la unicidad están garantizadas, la respuesta siempre está bien definida y el paso de fusión nunca tiene que razonar sobre factores compartidos.
Los sistemas cuyos módulos no son coprimos dos a dos se rechazan en lugar de resolverse, lo que mantiene el contrato simple y honesto.
Cómo el CRT sucesivo calcula la solución exactamente y dónde se usa
Internamente, el motor parte de la primera congruencia y fusiona repetidamente la siguiente. Dada una solución parcial x congruente con x0 módulo m y una nueva congruencia x congruente con a módulo n con m y n coprimos, calcula el inverso modular de m módulo n con el algoritmo euclidiano extendido, lo multiplica por la diferencia reducida a menos x0, y eleva x0 en m veces ese paso para obtener la nueva solución parcial módulo m por n.
Los estudiantes conocen esta construcción cuando los libros de texto les piden reconstruir un número a partir de sus residuos; los profesores pueden generar claves de respuestas para hojas de ejercicios de congruencias simultáneas sin confiar en calculadoras opacas; los desarrolladores usan el mismo contrato para validar reconstrucciones modulares en demostraciones educativas de RSA, donde el CRT con factores primos coprimos acelera el descifrado, y para construir vectores de prueba deterministas para bibliotecas de aritmética modular.
Qué puede hacer con ella
Congruencias simultáneas de deberes y concursos
Resuelva sistemas de libros de texto como x ≡ 2 mod 3, x ≡ 3 mod 5, x ≡ 2 mod 7 y obtenga la solución no negativa mínima con el producto de los módulos.
Preguntas frecuentes
¿Cuánto cuesta la calculadora del teorema chino del resto?
Es gratuita en su navegador en esta página.
¿Deben ser los módulos coprimos dos a dos?
Sí. Esta calculadora exige módulos coprimos dos a dos, lo que garantiza una solución única módulo su producto.
¿El algoritmo es aleatorio?
No. Usa el CRT sucesivo determinista con gcd entero exacto e inversos modulares. Los mismos restos y módulos siempre producen la misma solución no negativa mínima.
¿Pueden ser negativos los restos?
Sí. Cada resto negativo se reduce primero módulo su propio módulo, de modo que se trata como el valor equivalente entre cero y el módulo menos uno, y el sistema se resuelve con normalidad.
¿Por qué hay una sola respuesta por debajo del producto de los módulos?
Porque el teorema garantiza una única clase de soluciones módulo ese producto cuando los módulos son coprimos dos a dos. En el ejemplo clásico, cualquier otra solución se diferencia de 23 en un múltiplo de 105, así que 23 es la menor.
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/math/chinese-remainder \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"remainders":[2,3,2],"moduli":[3,5,7]}'const res = await fetch("https://api.kit.forhosting.com/math/chinese-remainder", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"remainders": [
2,
3,
2
],
"moduli": [
3,
5,
7
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/chinese-remainder",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"remainders": [
2,
3,
2
],
"moduli": [
3,
5,
7
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/chinese-remainder", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"remainders":[2,3,2],"moduli":[3,5,7]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"remainders":[2,3,2],"moduli":[3,5,7]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/chinese-remainder", 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
{
"remainders": [
2,
3,
2
],
"moduli": [
3,
5,
7
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.chinese_remainder",
"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_items | 64 |
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
La calculadora del teorema chino del resto resuelve un sistema de congruencias simultáneas —x congruente con cada resto a_i módulo cada módulo n_i— cuando los módulos son coprimos dos a dos, y devuelve la solución no negativa mínima junto con el producto de los módulos. Si algún par de módulos comparte un factor común, la petición falla con un claro error invalid_input en lugar de una respuesta adivinada.
Qué garantiza el teorema chino del resto para módulos coprimos
El clásico teorema chino del resto afirma que si los módulos n_1 a n_k son coprimos dos a dos —es decir, cada par no comparte ningún factor común mayor que uno— entonces existe exactamente una clase de residuos módulo el producto de todos los n_i que satisface cada congruencia x congruente con a_i módulo n_i a la vez. En caso de éxito, la respuesta JSON incluye x, el módulo (que aquí equivale al producto de los módulos de entrada), el propio producto, los restos reducidos al intervalo canónico de cero a n_i menos uno, una copia de los módulos y el número de congruencias.
Cómo se validan las entradas y por qué se rechazan los módulos no coprimos
Esta es una decisión de diseño deliberada, no una limitación de las matemáticas: los sistemas CRT generales con factores compartidos pueden ser inconsistentes, y en lugar de cambiar silenciosamente la semántica, esta calculadora mantiene una única promesa: módulos coprimos dos a dos dentro, solución no negativa mínima fuera. Los campos aceptados son remainders y moduli, dos arrays JSON de enteros de igual longitud, con los alias a, ai y residues que corresponden a remainders, y n, ni y mods que corresponden a moduli, de modo que formularios, cadenas de consulta y cuadernos antiguos pueden compartir un mismo contrato. Cada entrada puede ser un entero JSON o una cadena decimal con un signo inicial opcional; las fracciones, la notación científica y los espacios incrustados se rechazan. Cada módulo debe ser un entero seguro positivo, los restos pueden ser negativos y se reducen al intervalo canónico antes de la fusión, y se aceptan como máximo sesenta y cuatro congruencias por petición. Antes de cualquier resolución, el motor comprueba cada par de módulos con el algoritmo euclidiano del gcd; si algún par tiene un gcd mayor que uno, la petición falla con invalid_input y un mensaje que nombra el par infractor, por ejemplo que el gcd de 4 y 6 es 2. Los arrays ausentes, las longitudes desiguales, las entradas no enteras y los productos que desbordan el rango de enteros seguros también fallan con invalid_input, de modo que una celda defectuosa de una hoja de cálculo nunca se convierte en una respuesta errónea silenciosa.
Cómo el CRT sucesivo calcula la solución exactamente y dónde se usa
En esta página el trabajo se ejecuta íntegramente en su navegador de forma gratuita; a través de la API cada resolución exitosa cuesta $0.002, la validación fallida no se cobra y nada se almacena después de que la respuesta regresa.
Casos de integración
Demostraciones educativas de RSA y reconstrucción modular
Eleve residuos módulo factores coprimos de vuelta a un único entero al explicar aceleraciones de RSA basadas en CRT, acertijos de calendario o isomorfismos de anillos.
Fixtures de prueba deterministas para bibliotecas modulares
Genere soluciones CRT reproducibles para pruebas unitarias y aserciones de CI sin incrustar tablas calculadas a mano que se desvían de la implementación.
Preguntas técnicas
¿Qué ocurre si los módulos no son coprimos?
La petición falla con invalid_input y un mensaje como 'Moduli are not pairwise coprime: gcd(4, 6) = 2', en lugar de adivinar una respuesta con una semántica distinta.
¿Se permiten restos negativos?
Sí. Los restos pueden ser negativos; se reducen al rango de cero a n_i menos uno antes de la fusión CRT. Los módulos deben ser enteros positivos.