Solucionador 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 dan x ≡ 23 mod 105. Admite módulos con factores comunes y le avisa cuando el sistema se contradice. 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
El recorrido es aritmética entera pura: sin red, sin aleatoriedad y sin reloj.
Qué dice el teorema chino del resto
Un sistema de congruencias busca un único número x que deje un resto concreto al dividirlo entre varios divisores, llamados módulos. Cuando los módulos son coprimos por pares, es decir, ninguna pareja comparte un factor, existe exactamente una respuesta entre cero y el producto de los módulos menos uno, y las demás se repiten en saltos de ese producto. El ejemplo clásico x ≡ 2 mod 3, x ≡ 3 mod 5, x ≡ 2 mod 7 tiene la única clase 23 módulo 105.
Cómo trabaja el solucionador y errores habituales
El solucionador combina las congruencias de una en una e incorpora cada nueva a la respuesta obtenida hasta ese momento. Si dos módulos comparten un factor, comprueba primero que sus restos coincidan módulo su máximo común divisor; si no coinciden, le avisa de que no hay solución. Cuando sí coinciden, la respuesta se repite cada mínimo común múltiplo de los módulos, no cada producto. Los errores típicos son esperar una respuesta única módulo el producto cuando los módulos comparten factores, escribir restos y módulos en distinto orden o en distinta cantidad y olvidar que un resto negativo simplemente se reduce módulo su propio divisor.
Dónde aparecen los sistemas de TCR en el estudio, la intuición criptográfica y el código
Los docentes pueden generar claves de respuesta para hojas de trabajo de congruencias simultáneas sin confiar en calculadoras opacas que ocultan los mcd intermedios. Los desarrolladores usan el mismo contrato para validar reconstrucciones modulares en demostraciones educativas de RSA, para construir vectores de prueba deterministas para bibliotecas de aritmética modular, y para comprobar que una canalización de residuos todavía se eleva a una sola clase tras un cambio de esquema.
La práctica de concursos suele necesitar un solucionador rápido y sin conexión para que el trabajo manuscrito pueda verificarse en segundos. Combine esta página con un comprobador de coprimalidad cuando solo necesite el mcd de dos enteros, y con la factorización en primos cuando necesite las potencias primas detrás de un solo módulo en lugar de un sistema simultáneo.
Qué puede hacer con ella
Congruencias simultáneas en tareas y concursos
Resuelva sistemas de libro de texto como x ≡ 2 mod 3, x ≡ 3 mod 5, x ≡ 2 mod 7 y verifique la clase única módulo el producto de los módulos.
Preguntas frecuentes
¿Cuánto cuesta el solucionador del teorema chino del resto?
Es gratis en su navegador en esta página.
¿Los módulos deben ser coprimos por pares?
No. Los módulos coprimos por pares siempre dan una solución única módulo su producto. Los módulos no coprimos se aceptan cuando los restos coinciden módulo cada mcd; en caso contrario, el sistema se rechaza como inconsistente.
¿El algoritmo es aleatorizado?
No. Usa TCR sucesivo determinista con mcd entero exacto e inversos modulares. Los mismos restos y módulos siempre producen el mismo x y el mismo módulo.
¿Cómo resuelvo x ≡ 2 mod 3, x ≡ 3 mod 5 y x ≡ 2 mod 7?
Escriba los restos 2, 3 y 2 y los módulos 3, 5 y 7 en el mismo orden. La respuesta es 23, y también sirve cualquier número que difiera de 23 en un múltiplo de 105.
¿Qué pasa si las congruencias se contradicen?
El solucionador le indica que el sistema es incompatible en lugar de inventar una respuesta. Solo hay solución cuando cada par de restos coincide módulo el máximo común divisor de sus dos módulos.
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/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/numth/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/numth/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/numth/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/numth/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": "numth.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.
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
El solucionador del teorema chino del resto toma un sistema de congruencias simultáneas —x congruente con cada resto a_i módulo cada módulo n_i— y devuelve la clase de solución única cuando existe. Usted proporciona arreglos paralelos de restos y módulos; el motor los combina con TCR sucesivo, comprueba la consistencia cuando los módulos comparten factores, y reporta tanto el representante x entre cero y módulo menos uno como el módulo de la clase de solución (el producto de los n_i cuando son coprimos por pares, o su mínimo común múltiplo en caso contrario).
Qué devuelve el teorema chino del resto y cuándo fallan los sistemas
El famoso trío de aula —x ≡ 2 mod 3, x ≡ 3 mod 5, x ≡ 2 mod 7— da x ≡ 23 mod 105. Esta herramienta también acepta la forma general: los módulos no necesitan ser coprimos por pares. Clásicamente, si los módulos son coprimos por pares, existe exactamente una clase de residuo módulo el producto de los n_i que satisface todas las congruencias a la vez. En ese caso, existe una solución si y solo si cada par de restos coincide módulo el mcd de los módulos correspondientes, y la solución es única módulo el mínimo común múltiplo de todos los n_i. Cuando los restos no coinciden, la solicitud falla con invalid_input y un mensaje que nombra la inconsistencia en lugar de inventar un x falso. La respuesta JSON en caso de éxito incluye x, modulus (el módulo de TCR de la clase de solución), product (el producto bruto de los módulos de entrada), los remainders reducidos entre cero y n_i menos uno, una copia de moduli, y count. Esa forma es estable para pruebas doradas, clientes de SDK y widgets de navegador que muestran la respuesta junto a una lista de verificación. Los arreglos ausentes, las longitudes desiguales, los módulos no positivos, los no enteros y los valores fuera del rango de enteros seguros también fallan con invalid_input, así que las celdas mal escritas de hoja de cálculo nunca se convierten en respuestas incorrectas en silencio.
Cómo se leen los restos y los módulos, y cómo se mantiene exacto el TCR sucesivo
Todo módulo debe ser un entero positivo seguro. Los restos pueden ser negativos y se reducen al intervalo canónico antes de combinarse. Internamente, el motor parte de la primera congruencia y combina repetidamente la siguiente: dado x ≡ x0 mod m y x ≡ a mod n, calcula g igual al mcd de m y n, rechaza el sistema si a menos x0 no es divisible entre g, luego construye la solución actualizada con un inverso modular de m entre g módulo n entre g, y multiplica el módulo por n entre g para obtener el nuevo mcm. Todas las multiplicaciones están protegidas para que el producto y el módulo intermedio de TCR se mantengan dentro de los enteros seguros de JavaScript; los productos sobredimensionados fallan claramente en lugar de desbordarse. Los campos preferidos son remainders y moduli como arreglos JSON de enteros de igual longitud. Los alias a, ai y residues se mapean a remainders; n, ni y mods se mapean a moduli, de modo que formularios, cadenas de consulta y notebooks heredados puedan reutilizar un solo 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.
Dónde aparecen los sistemas de TCR en el estudio, la intuición criptográfica y el código
En esta página el trabajo se ejecuta enteramente en su navegador; a través de la API cada resolución exitosa cuesta $0.002, la validación fallida no se cobra y no se guarda nada después de devolver la respuesta.
Casos de integración
Reconstrucción modular en demostraciones docentes
Eleve listas de residuos de vuelta a una sola clase entera al explicar isomorfismos de anillos, rompecabezas de calendario, o pasos de TCR de estilo RSA educativo.
Fixtures de prueba deterministas para bibliotecas modulares
Genere soluciones de TCR reproducibles para pruebas unitarias y aserciones de CI sin incrustar tablas calculadas a mano que se desvíen de la implementación.
Preguntas técnicas
¿Qué ocurre si el sistema es inconsistente?
La solicitud falla con invalid_input y un mensaje de que ningún entero x satisface el sistema completo porque los restos no coinciden módulo el mcd de los módulos.
¿Se permiten restos negativos?
Sí. Los restos pueden ser negativos; se reducen al rango entre cero y n_i menos uno antes de la combinación de TCR. Los módulos deben ser enteros positivos.