总结一下中国剩余定理,即一次同余方程组的解的存在性分析及计算,为之后的欧拉函数定理部分做铺垫。这部分内容在南宋时期由数学家秦九韶最先得出。
P.S. 本文具体内容可查看《数学的思维方式与创新》,丘维声著。在该书的第26页下面关于一次同余方程组的其他解的求解过程部分有一点小问题,应该是 d ≡ c ( m o d m i ) d\equiv c(\!\!\!\!\mod m_i) d≡c(modmi),书中那样写成了 c ≡ d ( m o d m i ) c\equiv d(\!\!\!\!\mod m_i) c≡d(modmi),理论上讲没有问题,但是写成 d ≡ c ( m o d m i ) d\equiv c(\!\!\!\!\mod m_i) d≡c(modmi)更符合实际。
一个连的士兵三三数余2,五五数余4,七七数余2,问士兵有多少人。
设士兵共有 x x x人,则可得到:
{ x ≡ 2 ( m o d 3 ) , x ≡ 4 ( m o d 5 ) , x ≡ 2 ( m o d 7 ) , \begin{cases} x\equiv2\,(\!\!\!\!\mod3),\\ x\equiv4\,(\!\!\!\!\mod5),\\ x\equiv2\,(\!\!\!\!\mod7),\\ \end{cases} ⎩⎪⎨⎪⎧x≡2(mod3),x≡4(mod5),x≡2(mod7),
上述的方程组称为一次同余方程组,下面推导其计算方法。
将上述问题一般化,有:
设 m 1 , m 2 , ⋯ , m s m_1,\,m_2,\,\cdots,\,m_s m1,m2,⋯,ms是两两互素且均大于1的整数, b 1 , ⋯ , b s b_1,\,\cdots,\,b_s b1,⋯,bs是任意给定的整数,考虑如下的一次同余方程组:
{ x ≡ b 1 ( m o d m 1 ) , x ≡ b 2 ( m o d m 2 ) , ⋯ ⋯ ⋯ ⋯ ⋯ x ≡ b s ( m o d m s ) , \begin{cases} x\equiv b_1\,(\!\!\!\!\mod m_1),\\ x\equiv b_2\,(\!\!\!\!\mod m_2),\\ \cdots\cdots\cdots\cdots\cdots\\ x\equiv b_s\,(\!\!\!\!\mod m_s),\\ \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x≡b1(modm1),x≡b2(modm2),⋯⋯⋯⋯⋯x≡bs(modms),
由于 m 1 , ⋯ , m s m_1,\,\cdots,\,m_s m1,⋯,ms两两互素,应用互素的性质3的推广(可参见与素数有关的一些性质及证明(一))可以得到:
对 i ∈ { 1 , 2 , ⋯ , s } i\in\{1,\,2,\,\cdots,\,s\} i∈{1,2,⋯,s},有
( m i , ∏ j ≠ i m j ) = 1 , \left(m_i,\,\prod\limits_{j\neq i}m_j\right)=1, ⎝⎛mi,j=i∏mj⎠⎞=1,
从而,存在 u i , v i ∈ Z u_i,\,v_i\in\mathbb{Z} ui,vi∈Z,使得
u i m i + v i ∏ j ≠ i m j = 1 , ( 整数互素的充要条件 ) u_im_i+v_i\prod\limits_{j\neq i}m_j=1,\quad(\text{\color{red}整数互素的充要条件}) uimi+vij=i∏mj=1,(整数互素的充要条件)
于是得到
v i ∏ j ≠ i m j = 1 − u i m i , v_i\prod\limits_{j\neq i}m_j=1-u_im_i, vij=i∏mj=1−uimi,
所以有
{ v i ∏ j ≠ i m j ≡ 1 ( m o d m i ) , v i ∏ j ≠ i m j ≡ 0 ( m o d m k ) , ( k ≠ i ) \begin{cases} v_i\prod\limits_{j\neq i}m_j\equiv 1(\!\!\!\!\mod m_i),\\ v_i\prod\limits_{j\neq i}m_j\equiv 0 (\!\!\!\!\mod m_k),\quad(k\neq i) \end{cases} ⎩⎪⎨⎪⎧vij=i∏mj≡1(modmi),vij=i∏mj≡0(modmk),(k=i)
显然,要构造余数为 b i b_i bi,只需将上式左右同乘以 b i b_i bi并求和即可,于是令
c = b 1 v 1 ∏ j ≠ i m j + ⋯ + b i v i ∏ j ≠ i m j + ⋯ + b s v s ∏ j ≠ i m j , (1) c=b_1v_1\prod\limits_{j\neq i}m_j+\cdots+b_iv_i\prod\limits_{j\neq i}m_j+\cdots+b_sv_s\prod\limits_{j\neq i}m_j,\tag{1} c=b1v1j=i∏mj+⋯+bivij=i∏mj+⋯+bsvsj=i∏mj,(1)
则可得
c ≡ b 1 0 + ⋯ + b i 1 + ⋯ + b s 0 ≡ b i ( m o d m i ) , ( i = 1 , 2 , ⋯ , s ) c\equiv b_10+\cdots+b_i1+\cdots+b_s0\equiv b_i(\!\!\!\!\!\!\mod m_i),\quad(i=1,\,2,\,\cdots,\,s) c≡b10+⋯+bi1+⋯+bs0≡bi(modmi),(i=1,2,⋯,s)
所以,由 ( 1 ) (1) (1)式构造的 c c c是一次同余方程组的一个解。
下面寻找这个方程组的其他解。
设 d d d是方程组的另解,则显然
d ≡ c ( m o d m i ) , ( i = 1 , 2 , ⋯ , s ) d\equiv c(\!\!\!\mod m_i),\quad(i=1,\,2,\,\cdots,\,s) d≡c(modmi),(i=1,2,⋯,s)
即
m i ∣ d − c , ( i = 1 , 2 , ⋯ , s ) m_i\,|\,d-c,\quad(i=1,\,2,\,\cdots,\,s) mi∣d−c,(i=1,2,⋯,s)
由于 m 1 , ⋯ , m s m_1,\,\cdots,\,m_s m1,⋯,ms两两互素,应用互素的性质2的推广(可参见与素数有关的一些性质及证明(一))可以得到
m 1 m 2 ⋯ m s ∣ d − c , m_1m_2\cdots m_s\,|\,d-c, m1m2⋯ms∣d−c,
于是可以得到
d ≡ c ( m o d m 1 m 2 ⋯ m s ) . d\equiv c(\!\!\!\!\!\!\mod m_1m_2\cdots m_s). d≡c(modm1m2⋯ms).
根据上面的讨论,显然可以得到下述定理:
设 m 1 , m 2 , ⋯ , m s m_1,\,m_2,\,\cdots,\,m_s m1,m2,⋯,ms是两两互素且均大于1的整数, b 1 , ⋯ , b s b_1,\,\cdots,\,b_s b1,⋯,bs是任意给定的整数,一次同余方程组
{ x ≡ b 1 ( m o d m 1 ) , x ≡ b 2 ( m o d m 2 ) , ⋯ ⋯ ⋯ ⋯ ⋯ x ≡ b s ( m o d m s ) , \begin{cases} x\equiv b_1\,(\!\!\!\!\mod m_1),\\ x\equiv b_2\,(\!\!\!\!\mod m_2),\\ \cdots\cdots\cdots\cdots\cdots\\ x\equiv b_s\,(\!\!\!\!\mod m_s),\\ \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x≡b1(modm1),x≡b2(modm2),⋯⋯⋯⋯⋯x≡bs(modms),
在 Z \mathbb{Z} Z中有解,其全部解是
c + k m 1 m 2 ⋯ m s , k ∈ Z , c+km_1m_2\cdots m_s,\quad k\in \mathbb{Z}, c+km1m2⋯ms,k∈Z,
其中
c = b 1 v 1 ∏ j ≠ i m j + ⋯ + b i v i ∏ j ≠ i m j + ⋯ + b s v s ∏ j ≠ i m j , c=b_1v_1\prod\limits_{j\neq i}m_j+\cdots+b_iv_i\prod\limits_{j\neq i}m_j+\cdots+b_sv_s\prod\limits_{j\neq i}m_j, c=b1v1j=i∏mj+⋯+bivij=i∏mj+⋯+bsvsj=i∏mj,
v i v_i vi满足
u i m i + v i ∏ j ≠ i m j = 1 , ( i = 1 , 2 , ⋯ , s ) . u_im_i+v_i\prod\limits_{j\neq i}m_j=1,\quad(i=1,\,2,\,\cdots,\,s). uimi+vij=i∏mj=1,(i=1,2,⋯,s).
先求出 v i ( i = 1 , 2 , ⋯ , s ) v_i(i=1,\,2,\,\cdots,\,s) vi(i=1,2,⋯,s),对 m i m_i mi和 ∏ j ≠ i m j \prod\limits_{j\neq i}m_j j=i∏mj作辗转相除法,将二者的最大公因数 1 1 1表示成二者的倍数和,此时 ∏ j ≠ i m j \prod\limits_{j\neq i}m_j j=i∏mj的倍数为 v i v_i vi。
下面对上面的士兵人数问题进行求解。
首先计算 3 3 3和 5 × 7 = 35 5\times7=35 5×7=35的最大公因数,作辗转相除法得
35 = 11 × 3 + 2 , 3 = 1 × 2 + 1 , 35=11\times3+2,\quad3=1\times2+1, 35=11×3+2,3=1×2+1,
所以
1 = 3 − 1 × 2 = 3 − 1 × ( 35 − 11 × 3 ) = 12 × 3 + ( − 1 ) × 35 1=3-1\times2=3-1\times(35-11\times3)=12\times3+(-1)\times35 1=3−1×2=3−1×(35−11×3)=12×3+(−1)×35
得到 v 1 = − 1 v_1=-1 v1=−1;
以此类推,分别得到 v 2 = 1 , v 3 = 1 v_2=1,\,v_3=1 v2=1,v3=1。
所以,得到此方程组的全部解是
d = c + m 1 m 2 m 3 k = 2 × ( − 1 ) × 35 + 4 × 1 × 21 + 2 × 1 × 15 + 3 × 5 × 7 k = 44 + 105 k , ( k ∈ Z ) \begin{aligned} d=&c+m_1m_2m_3k\\ =&2\times(-1)\times35+4\times1\times21+2\times1\times15+3\times5\times7k\\ =&44+105k,\quad(k\in\mathbb{Z}) \end{aligned} d===c+m1m2m3k2×(−1)×35+4×1×21+2×1×15+3×5×7k44+105k,(k∈Z)
由于一个连有一百多名士兵,所以取 k = 1 k=1 k=1,得到该连有 149 149 149名士兵。
定理中的条件" m 1 , m 2 , ⋯ , m s m_1,\,m_2,\,\cdots,\,m_s m1,m2,⋯,ms是两两互素的"是必要的,整个定理的推导都是围绕互素这个条件展开,所以如果没有这个条件,方程组可能没有解。