Saltar al contenido
El bit perdido
Newsletter

Teorema chino del resto paso a paso: sistemas de congruencias

Resuelve sistemas de congruencias con el teorema chino del resto, paso a paso: la construcción con Mᵢ y sus inversos y, si los módulos no son primos entre sí, por sustitución, diciendo cuándo no hay solución.

Escribe x ≡ 2 (mod 3), x = 2 mod 3 o, con coeficiente, 3x = 2 mod 5. Para ≡ vale =.

Ejemplos:

Ejemplo resuelto paso a paso

El problema de Sunzi

x≡23(mod105)x \equiv 23 \pmod{105}
  1. 1El sistema

    Buscamos los enteros xx que cumplen las 3 congruencias a la vez. Primero despejamos xx en cada una que lo necesite; después las juntamos.

    {x≡2(mod3)x≡3(mod5)x≡2(mod7)\left\{ \begin{aligned} x &\equiv 2 \pmod{3} \\ x &\equiv 3 \pmod{5} \\ x &\equiv 2 \pmod{7} \end{aligned} \right.
  2. 2Teorema chino del resto

    Los módulos 33, 55 y 77 son primos entre sí dos a dos, así que hay una única solución módulo su producto MM. La construimos: para cada congruencia, Mi=M/miM_i = M / m_i y yiy_i es el inverso de MiM_i módulo mim_i. Así, el sumando riMiyir_i M_i y_i vale rir_i módulo mim_i y 00 módulo los demás.

    M=3⋅5⋅7=105M = 3 \cdot 5 \cdot 7 = 105
  3. 3Los inversos

    Reducimos cada MiM_i módulo mim_i y buscamos su inverso (con Euclides extendido, o probando si los números son pequeños).

    rimiMiMi mod miyi=Mi−1 mod mi233522352111271511\begin{array}{r|r|r|r|r} r_i & m_i & M_i & M_i \bmod m_i & y_i = M_i^{-1} \bmod m_i \\ \hline 2 & 3 & 35 & 2 & 2 \\ 3 & 5 & 21 & 1 & 1 \\ 2 & 7 & 15 & 1 & 1 \end{array}
  4. 4La solución

    Sumamos riMiyir_i M_i y_i y reducimos módulo M=105M = 105.

    x≡2⋅35⋅2+3⋅21⋅1+2⋅15⋅1=233≡23(mod105)x \equiv 2 \cdot 35 \cdot 2 + 3 \cdot 21 \cdot 1 + 2 \cdot 15 \cdot 1 = 233 \equiv 23 \pmod{105}
  5. 5Comprobación

    Sustituimos x=23x = 23 en cada congruencia.

    23≡2(mod3)23≡3(mod5)23≡2(mod7)\begin{aligned} 23 &\equiv 2 \pmod{3} \\ 23 &\equiv 3 \pmod{5} \\ 23 &\equiv 2 \pmod{7} \end{aligned}

La idea

Un sistema de congruencias

x≡r1(modm1),…,x≡rk(modmk)x\equiv r_1\pmod{m_1},\quad \dots,\quad x\equiv r_k\pmod{m_k}

con módulos primos entre sí dos a dos tiene una única solución módulo M=m1⋯mkM=m_1\cdots m_k.

La construcción

Para cada ii se toma Mi=M/miM_i=M/m_i (el producto de los demás módulos) y su inverso yi=Mi−1 mod miy_i=M_i^{-1}\bmod m_i, que existe porque MiM_i y mim_i son primos entre sí. La solución es

x≡∑i=1kri Mi yi(modM).x\equiv\sum_{i=1}^{k} r_i\,M_i\,y_i\pmod{M}.

Cada sumando vale rir_i módulo mim_i y 00 módulo los demás, por eso la suma funciona.

Un ejemplo completo

Resolvamos

x≡1(mod4),x≡2(mod5),x≡3(mod7).x\equiv1\pmod 4,\qquad x\equiv2\pmod 5,\qquad x\equiv3\pmod 7.

Aquí M=4⋅5⋅7=140M=4\cdot5\cdot7=140.

mim_irir_iMiM_iMi mod miM_i \bmod m_iyiy_iriMiyir_iM_iy_i
441135353333105105
552228283322112112
773320206666360360

Por ejemplo, y1=3y_1=3 porque 35⋅3=105≡1(mod4)35\cdot3=105\equiv1\pmod 4. Sumando:

x≡105+112+360=577≡17(mod140).x\equiv105+112+360=577\equiv17\pmod{140}.

Comprobación: 17=4⋅4+1=3⋅5+2=2⋅7+317=4\cdot4+1=3\cdot5+2=2\cdot7+3.

Errores típicos

  • Aplicar la fórmula con módulos que no son coprimos: el inverso yiy_i puede no existir. Hay que comprobar los mcd⁡\operatorname{mcd} o resolver por sustitución.
  • Calcular yiy_i módulo MM en vez de módulo mim_i.
  • Olvidar reducir el resultado módulo MM (aquí 577577 y 1717 son la misma solución).
  • Cambiar de sitio los restos rir_i y los módulos mim_i.

Dónde se usa

Acelera el descifrado de RSA (se calcula módulo cada primo por separado) y permite repartir cálculos con números enormes. También sirve para problemas de calendarios y ciclos que se repiten con periodos distintos.

Preguntas frecuentes

¿Qué dice el teorema chino del resto?

Si los módulos m₁, …, mₖ son primos entre sí dos a dos, el sistema x ≡ r₁ (mod m₁), …, x ≡ rₖ (mod mₖ) tiene solución y es única módulo M = m₁·…·mₖ.

¿Y si los módulos no son primos entre sí?

Puede haber solución o no. Hay solución si y solo si cada pareja de congruencias es compatible: rᵢ ≡ rⱼ módulo mcd(mᵢ, mⱼ). Si la hay, es única módulo el mcm de los módulos. Se resuelve por sustitución.

¿De dónde viene el nombre?

De un problema de congruencias que aparece en el texto chino Sunzi Suanjing, de datación incierta (entre los siglos III y V). El enunciado general con módulos coprimos es posterior.

¿Para qué sirve en la práctica?

Para trabajar con números grandes por partes: se calcula módulo cada factor, que es más barato, y luego se recompone. RSA lo usa para descifrar más deprisa.

¿Cómo compruebo mi solución?

Dividiendo x entre cada módulo mᵢ: el resto tiene que ser rᵢ. Y la solución, reducida módulo M, debe estar entre 0 y M − 1.

Otras herramientas

Para leer