先解决您的提问中的乘率问题。
x==1 mod 2
x==2 mod 5
x==3 mod 7
x==4 mod 9
2*5*9 *A==1 mod 7
==10*9A==3*9A==27A==-A
故A==-1 mod 7
2*5*7*B==1 mod 9
==10*7B==1*7B==-2B==1==-8,
故B==4 mod 9
事实上,就像我们解矩阵方程组不一定要经过单位向量和单位矩阵一样,求乘率的过程也并不是解同余式组所必要的过程。下面的解法,如果熟练掌握,中国剩余定理的本质、同余概念的本质,将会有全新的、深入的理解。恳请仔细阅读,。
题:
以下为打字方便用双等号==取代三线等号≡表示同余。
x==1 mod 2
x==2 mod 5
x==3 mod 7
x==4 mod 9
解:
令
x==2*5*7*9 * ( a/2+b/5+c/7+d/9 mod 1)
(
注:相当于
x==2*5*7*9 * ( a/2+b/3+c/5+d/9) mod 2*5*7*9
K mod 1相当于求K的非整数部分。数学教材上有别的记法,不过这种记法用过一次就不会忘了并且便于统
一运算。
)
易得5*7*9a==1 mod 2
2*7*9b==2 mod 5
2*5*9c==3 mod 7
2*5*7d==4 mod 9
于是得a==1 mod 2, 注意,可取任一特值作代表。
注意,此时1/2是a./2的非整数部分,并要保证非整数部分不变,a值可以任意变。下面类似
b==2 mod 5
10*9c==3==3*9c==27c==-c mod 7, c==-3==4 mod 7
7d==4==-2d mod 9, d==-2 ==7 mod 9
取a=1,b=2,c=4,d=-2作为代表(下面计算过程中可灵活机动处理,只要保证非整数部分不变即可)
代入x==2*5*7*9 * ( a/2+b/5+c/7+d/9 mod 1)即可得解。
计算过程示例:
先算a/2+b/5+c/7+d/9 mod 1,即其非整数部分。
1/2+2/5+4/7-2/9 mod 1
==9/10-3/7-2/9 (注意,这里将4/7灵活处理为-3/7,只要非整数部分不变就行)
==33/70-2/9=(297-140)/630=157/630
故x==630 *( a/2+b/5+c/7+d/9 mod 1) ==630 *( a/2+b/5+c/7+d/9) mod 630
==157 mod 630
注1:这种解法是中国剩余定理的等效解法,并且不必计算乘率。就象我们解矩阵方程,不一定经过单位向量和单位矩阵。
注2:要理解 mod 符号的本质。
a mod m就是 a + mk , 或 a- mk , 或 mk+a, 或-mk + a
总是在a 的上面附着了 m的某个倍数,只要满足加法(代数和)的运算规则就行, 交换律,结合律,分配律。
并且注意到 我们在中间过程往往忽略这个倍数k的具体值,也不管他的符号是正号还是负号。
于是 mod m就相当于一个 在等号两侧与a平等地位上任意滑移的量而已。
用
a==b
a==
a
将它们都认为等同,在此发散思维之下,将同余式与不定方程可以从内容到形式上完全统一起来,互相为用,非常方便。
在理解了以上方法之后,解同余式组会变得相法便利:
题:
以下为打字方便用双等号==取代三线等号≡表示同余。
x==(1;2;3;4) mod (2;5;7;9)
上面是类似向量的表示;用分号表示与普通向量性质不完全一样。
解:
令
x==2*5*7*9 * ( a/2+b/5+c/7+d/9 mod 1)
5*7*9a==1 mod 2, 或用洪伯阳同余表示写成 a==1/ (5*7*9) mod 2==1 mod 2
2*7*9b==2 mod 5, 即 b==2/ (2*7*9) mod 5 ==1/(7*9)==1/63==1/3==6/3==2 mod 5
同理
c==3/ (2*5*9 ) mod 7 ==1/(2*5*3)==1/2==8/2==4 mod 7
d==4/(2*5*7) mod 9==4/7 ==4/-2==-2 mod 9
如果速用洪伯阳表示,可以快速心算出结果。
再计算 1/2+2/5+4/7-2/9 mod 1得 157/630
于是 x==157 mod 630
推广:
x==(r1; r2; r3;…) mod (m1;m2;m3;…)的解是
记m1m2m3…之积为P
x==P* ( Y mod 1)==写成 [P*( Y mod 1)] mod P其实很噜嗦
Y=sum
[
( ri/ (P/mi) mod mi ) / mi
]
外一则:
此题还可以如此解:
x==1 mod 2
2x==-1 mod 5*7*9 ==-1+5*7*9=314 mod 5*7*9
x==157 mod 5*7*9
x==157 mod 2*5*7*9 ==157 mod 630