中国剩余定理(CRT)

问题引出

“有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?”即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。《孙子算经》中首次提到了同余方程组问题,以及以上具体问题的解法,因此在中文数学文献中也会将中国剩余定理称为孙子定理。——百度百科

前置知识

同余的性质

解题思路

Tip:建议读者不要太着急后翻,按照顺序阅读有助于理解

依题意可得:
{ x ≡ 2 ( m o d   3 ) x ≡ 3 ( m o d   5 ) x ≡ 2 ( m o d   7 ) \left\{\begin{matrix}x\equiv 2(mod\ 3)\\x\equiv 3(mod\ 5)\\x\equiv 2(mod\ 7)\end{matrix}\right. x2(mod 3)x3(mod 5)x2(mod 7)

要求求出 x x x 。三个方程式放在一起不好想,先拆开,变成三条方程:
x 1 ≡ 2 ( m o d   3 ) x 2 ≡ 3 ( m o d   5 ) x 3 ≡ 2 ( m o d   7 ) x_1\equiv 2(mod\ 3)\\x_2\equiv 3(mod\ 5)\\x_3\equiv 2(mod\ 7) x12(mod 3)x23(mod 5)x32(mod 7)

现在,假设:
x 1 + x 2 ≡ 2 ( m o d   3 ) , x 1 + x 3 ≡ 2 ( m o d   3 ) x_1+x_2\equiv 2(mod\ 3),x_1+x_3\equiv 2(mod\ 3) x1+x22(mod 3),x1+x32(mod 3)
x 2 + x 1 ≡ 3 ( m o d   5 ) , x 2 + x 3 ≡ 3 ( m o d   5 ) x_2+x_1\equiv 3(mod\ 5),x_2+x_3\equiv 3(mod\ 5) x2+x13(mod 5),x2+x33(mod 5)
x 3 + x 1 ≡ 2 ( m o d   7 ) , x 3 + x 2 ≡ 2 ( m o d   7 ) x_3+x_1\equiv 2(mod\ 7),x_3+x_2\equiv 2(mod\ 7) x3+x12(mod 7),x3+x22(mod 7)

那么:
∵ x 1 ≡ x 1 + 0 ≡ x 1 + x 2 ≡ x 1 + x 3 ≡ 2 ( m o d   3 ) \because x_1\equiv x_1+0\equiv x_1+x_2\equiv x_1+x_3\equiv2(mod\ 3) x1x1+0x1+x2x1+x32(mod 3)
∴ x 2 ≡ x 3 ≡ 0 ( m o d   3 ) \therefore x_2\equiv x_3\equiv 0(mod\ 3) x2x30(mod 3)
∴ 3 ∣ x 2 , 3 ∣ x 3 \therefore 3|x_2,3|x_3 3x2,3x3
∵ x 2 ≡ x 2 + 0 ≡ x 2 + x 1 ≡ x 2 + x 3 ≡ 3 ( m o d   5 ) \because x_2\equiv x_2+0\equiv x_2+x_1\equiv x_2+x_3\equiv3(mod\ 5) x2x2+0x2+x1x2+x33(mod 5)
∴ x 1 ≡ x 3 ≡ 0 ( m o d   5 ) \therefore x_1\equiv x_3\equiv 0(mod\ 5) x1x30(mod 5)
∴ 5 ∣ x 1 , 5 ∣ x 3 \therefore 5|x_1,5|x_3 5x1,5x3
∵ x 3 ≡ x 3 + 0 ≡ x 3 + x 1 ≡ x 3 + x 2 ≡ 2 ( m o d   7 ) \because x_3\equiv x_3+0\equiv x_3+x_1\equiv x_3+x_2\equiv2(mod\ 7) x3x3+0x3+x1x3+x22(mod 7)
∴ x 1 ≡ x 2 ≡ 0 ( m o d   7 ) \therefore x_1\equiv x_2\equiv 0(mod\ 7) x1x20(mod 7)
∴ 7 ∣ x 1 , 7 ∣ x 2 \therefore 7|x_1,7|x_2 7x1,7x2

我们发现,如果这样假设,那么 x 1 + x 2 + x 3 x_1+x_2+x_3 x1+x2+x3 就会是方程的一个解:
∵ x 2 ≡ x 3 ≡ 0 ( m o d   3 ) \because x_2\equiv x_3\equiv 0(mod\ 3) x2x30(mod 3)
∴ x 1 + x 2 + x 3 ≡ x 1 ≡ 2 ( m o d   3 ) \therefore x_1+x_2+x_3\equiv x_1\equiv2(mod\ 3) x1+x2+x3x12(mod 3)
∵ x 1 ≡ x 3 ≡ 0 ( m o d   5 ) \because x_1\equiv x_3\equiv 0(mod\ 5) x1x30(mod 5)
∴ x 1 + x 2 + x 3 ≡ x 2 ≡ 3 ( m o d   5 ) \therefore x_1+x_2+x_3\equiv x_2\equiv3(mod\ 5) x1+x2+x3x23(mod 5)
∵ x 1 ≡ x 2 ≡ 0 ( m o d   7 ) \because x_1\equiv x_2\equiv 0(mod\ 7) x1x20(mod 7)
∴ x 1 + x 2 + x 3 ≡ x 3 ≡ 2 ( m o d   7 ) \therefore x_1+x_2+x_3\equiv x_3\equiv2(mod\ 7) x1+x2+x3x32(mod 7)

满足题意,那么现在就只需要找出求解 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3 的方法。设 x 1 = 5 × 7 × k 1 = 35 k 1 , x 2 = 3 × 7 × k 2 = 21 k 2 , x 3 = 3 × 5 × k 3 = 15 k 3 x_1=5\times 7\times k_1=35k_1,x_2=3\times 7\times k_2=21k_2,x_3=3\times 5\times k_3=15k_3 x1=5×7×k1=35k1,x2=3×7×k2=21k2,x3=3×5×k3=15k3。将它们分别代入三个式子中:
35 k 1 ≡ 2 ( m o d   3 ) 35k_1\equiv 2(mod\ 3) 35k12(mod 3)
21 k 2 ≡ 3 ( m o d   5 ) 21k_2\equiv 3(mod\ 5) 21k23(mod 5)
15 k 3 ≡ 2 ( m o d   7 ) 15k_3\equiv 2(mod\ 7) 15k32(mod 7)

右边统一化一:
35 k 1 × 1 2 ≡ 1 ( m o d   3 ) 35k_1\times\frac{1}{2}\equiv 1(mod\ 3) 35k1×211(mod 3)
21 k 2 × 1 3 ≡ 1 ( m o d   5 ) 21k_2\times\frac{1}{3}\equiv 1(mod\ 5) 21k2×311(mod 5)
15 k 3 × 1 2 ≡ 1 ( m o d   7 ) 15k_3\times\frac{1}{2}\equiv 1(mod\ 7) 15k3×211(mod 7)
k 1 × 35 2 ≡ 1 ( m o d   3 ) k_1\times \frac{35}{2}\equiv 1(mod\ 3) k1×2351(mod 3)
k 2 × 21 3 ≡ 1 ( m o d   5 ) k_2\times \frac{21}{3}\equiv 1(mod\ 5) k2×3211(mod 5)
k 3 × 15 2 ≡ 1 ( m o d   7 ) k_3\times \frac{15}{2}\equiv 1(mod\ 7) k3×2151(mod 7)

分别求出 k 1 , k 2 , k 3 k_1,k_2,k_3 k1,k2,k3 在对应模数意义下的值,再通过它们的值,求出 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3 ,相加,并且 m o d   3 × 5 × 7 mod\ 3\times5\times7 mod 3×5×7得到它的解在 m o d   105 mod\ 105 mod 105 意义下,是 23 23 23
尝试将特殊情况一般化:

假 设 m 中 的 数 两 两 互 质 假设m中的数两两互质 m
{ x ≡ a 1 ( m o d   m 1 ) x ≡ a 2 ( m o d   m 2 ) . . . . . . x ≡ a n ( m o d   m n ) \left\{\begin{matrix}x\equiv a_1(mod\ m_1)\\x\equiv a_2(mod\ m_2)\\......\\x\equiv a_n(mod\ m_n)\end{matrix}\right. xa1(mod m1)xa2(mod m2)......xan(mod mn)
假 设 对 于 任 意 的   i   ( 1 ≤ i ≤ n )   都 有 ∏ j = 1 n m j m i ∣ x i , 则 对 于 任 意 的   i   ( 1 ≤ i ≤ n )   都 有 x i = k i × ∏ j = 1 n m j m i 假设对于任意的\ i\ (1\le i\le n)\ 都有\frac{\prod\limits_{j=1}^nm_j}{m_i}|x_i,则对于任意的\ i\ (1\le i\le n)\ 都有x_i=k_i\times\frac{\prod\limits_{j=1}^nm_j}{m_i}  i (1in) mij=1nmjxi, i (1in) xi=ki×mij=1nmj
再 令 M i = ∏ j = 1 n m j m i , 带 入 原 式 得 : 再令M_i=\frac{\prod\limits_{j=1}^nm_j}{m_i},带入原式得: Mi=mij=1nmj,
{ k 1 × M 1 ≡ a 1 ( m o d   m 1 ) k 2 × M 2 ≡ a 2 ( m o d   m 2 ) . . . . . . k n × M 3 ≡ a n ( m o d   m n ) \left\{\begin{matrix}k_1\times M_1\equiv a_1(mod\ m_1)\\k_2\times M_2\equiv a_2(mod\ m_2)\\......\\k_n\times M_3\equiv a_n(mod\ m_n)\end{matrix}\right. k1×M1a1(mod m1)k2×M2a2(mod m2)......kn×M3an(mod mn)

将 右 边 化 一 : 将右边化一:
{ k 1 × M 1 × 1 a 1 ≡ 1 ( m o d   m 1 ) k 2 × M 2 × 1 a 2 ≡ 1 ( m o d   m 2 ) . . . . . . k n × M n × 1 a n ≡ 1 ( m o d   m n ) \left\{\begin{matrix}k_1\times M_1\times\frac{1}{a_1}\equiv 1(mod\ m_1)\\k_2\times M_2\times\frac{1}{a_2}\equiv 1(mod\ m_2)\\......\\k_n\times M_n\times\frac{1}{a_n}\equiv 1(mod\ m_n)\end{matrix}\right. k1×M1×a111(mod m1)k2×M2×a211(mod m2)......kn×Mn×an11(mod mn)

表 示 出 k : 表示出k: k
{ k 1 ≡ 1 M 1 × 1 a 1 ( m o d   m 1 ) k 2 ≡ 1 M 2 × 1 a 2 ( m o d   m 2 ) . . . . . . k n ≡ 1 M n × 1 a n ( m o d   m n ) \left\{\begin{matrix}k_1\equiv \frac{1}{M_1\times\frac{1}{a_1}}(mod\ m_1)\\k_2\equiv \frac{1}{M_2\times\frac{1}{a_2}}(mod\ m_2)\\......\\k_n\equiv \frac{1}{M_n\times\frac{1}{a_n}}(mod\ m_n)\end{matrix}\right. k1M1×a111(mod m1)k2M2×a211(mod m2)......knMn×an11(mod mn)

化 简 : 化简:
{ k 1 ≡ 1 M 1 × 1 1 a 1 ≡ 1 M 1 × a 1 ( m o d   m 1 ) k 2 ≡ 1 M 2 × 1 1 a 2 ≡ 1 M 2 × a 2 ( m o d   m 2 ) . . . . . . k n ≡ 1 M n × 1 1 a n ≡ 1 M n × a n ( m o d   m n ) \left\{\begin{matrix}k_1\equiv \frac{1}{M_1}\times\frac{1}{\frac{1}{a_1}}\equiv\frac{1}{M_1}\times a_1(mod\ m_1)\\k_2\equiv \frac{1}{M_2}\times\frac{1}{\frac{1}{a_2}}\equiv\frac{1}{M_2}\times a_2(mod\ m_2)\\......\\k_n\equiv \frac{1}{M_n}\times\frac{1}{\frac{1}{a_n}}\equiv\frac{1}{M_n}\times a_n(mod\ m_n)\end{matrix}\right. k1M11×a111M11×a1(mod m1)k2M21×a211M21×a2(mod m2)......knMn1×an11Mn1×an(mod mn)

最 终 答 案 : x ≡ ∑ i = 1 n k i × M i ( m o d   ∏ i = 1 n m i ) \boxed{最终答案:x\equiv\sum\limits_{i=1}^nk_i\times M_i(mod\ \prod\limits_{i=1}^nm_i)} xi=1nki×Mi(mod i=1nmi)

你可能感兴趣的:(线性代数,算法)