使用中国剩余定理解同余方程组

chinese_remainder_theorem/congruence_equation2026-08-24 19:46:25

中国剩余定理可求解如下形式的一元线性同余方程组(其中 n1,n2,⋯ ,nkn_1, n_2, \cdots, n_k 两两互质):

{x≡a1(modn1)x≡a2(modn2)⋮x≡ak(modnk)\begin{cases} x &\equiv a_1 \pmod {n_1} \\ x &\equiv a_2 \pmod {n_2} \\ &\vdots \\ x &\equiv a_k \pmod {n_k} \\ \end{cases}

求解过程

  1. 计算所有模数的积 nn;
  2. 对于第 ii 个方程:
    1. 计算 mi=nnim_i=\frac{n}{n_i};
    2. 计算 mim_i 在模 nin_i 意义下的逆元 mi−1m_i^{-1};
    3. 计算 ei=mimi−1(modn)e_i=m_im_i^{-1}\pmod n.
  3. 方程组在模 nn 意义下的唯一解为:x=∑i=1kaiei(modn)x=\sum_{i=1}^k a_ie_i \pmod n.

求解得关键就是找出一组 ei(modn)e_i \pmod n,使得 ei≡1(modni)e_i \equiv 1 \pmod {n_i},并且对于 j≠ij\ne i, ei≡0(modnj)e_i \equiv 0 \pmod {n_j}. 通过上面得方法找出的 eie_i 满足这些条件,因为:

  • eie_i 中含有 mim_i,而 mim_i 含有其他 njn_j 的因子,所以 ei≡0(modnj)e_i \equiv 0 \pmod {n_j}.
  • 因为 mi−1m_i^{-1} 是 mim_i 在模 nin_i 意义下的逆元,所以 ei=mimi−1=1(modni)e_i=m_im_i^{-1}=1 \pmod {n_i}.

这一组 ei(modn)e_i \pmod n 作为基,保证 aieia_ie_i 模 nin_i 为 aia_i,而其他均为 00. 通过设定在不同基上的坐标 aia_i 可以单独控制模 nin_i 余下的值,而不会影响其他模数 njn_j 余下的值.

典型示例

{x≡2(mod3)x≡3(mod5)x≡2(mod7)\begin{cases} x \equiv 2 \pmod {3} \\ x \equiv 3 \pmod {5} \\ x \equiv 2 \pmod {7} \\ \end{cases}

解:

模数两两互质,它们的积 n=3×5×7=105n = 3\times 5\times7=105.

计算 mim_i:m1=35,m2=21,m3=15m_1=35, m_2=21, m_3=15.

计算 mi−1m_i^{-1}:35x≡1(mod3),21x≡1(mod5),15x≡1(mod7)35x\equiv1 \pmod 3, 21x\equiv1 \pmod 5, 15x\equiv1 \pmod 7.

2x≡1(mod3),1x≡1(mod5),1x≡1(mod7)2x\equiv1 \pmod 3, 1x\equiv1 \pmod 5, 1x\equiv1 \pmod 7.

解得 m1−1=2,m2−1=1,m3−1=1m_1^{-1}=2, m_2^{-1}=1, m_3^{-1}=1.

计算 eie_i:e1=70,e2=21,e3=15e_1=70, e_2=21, e_3=15.

解为 x=2×70+3×21+2×15=23(mod105)x=2 \times 70 + 3 \times 21 + 2 \times 15 = 23 \pmod{105}.

模数并非两两互素的情况

如果方程组模数并非两两互素,将模数进行因式分解,将一个方程变为多个方程,其模数为原来模数的因子(这些因子之间要两两互素,即素分解).

例如 x≡7(mod12)x\equiv7\pmod{12} 可以分解为

{x≡1(mod3)x≡3(mod4)\begin{cases} x \equiv 1 \pmod {3} \\ x \equiv 3 \pmod {4} \\ \end{cases}

xx 的系数不为一的情况

如果方程组中方程的系数不为一,那么可以两边同时乘以系数的逆,把 xx 的系数化为一.

例如

5x≡1(mod7)3⋅5x≡3⋅1(mod7)x≡3(mod7)5x\equiv1\pmod{7} \\ 3\cdot5x\equiv3\cdot1\pmod{7} \\ x\equiv3\pmod{7}

xx 的次数不为一的情况

使用费马小定理降次.

若出现 x2≡1x^2\equiv 1,将其拆开成两个方程组,两个方程组其他方程相同,而这个方程分别为 x≡1x \equiv 1 和 x≡−1x \equiv -1.

本页目录