Expended Chinese remainder theorem
中国剩余定理:
当
∀i∈{1,2,..n}→pi
是质数,有:
x≡a1modp1
x≡a2modp2
…
x≡anmodpn
等价于
x≡a1⋅M1⋅M−11+a2⋅M2⋅M−12+...+an⋅Mn⋅M−1nmodM
其中:
M=p1⋅p2⋅...⋅pn
Mi=M/pi
M−1i⋅Mi≡0modpi
在此不对中国剩余定理进行证明,因为证明很显然。
拓展中国剩余定理:
对于任意的整数
p1
和
p2
,有:
x≡a1modp1
x≡a2modp2
在有解的情况下等价于:
x≡a1+p1⋅a2−a1d⋅Inv(p1d,p2d)modp1⋅p2d
其中:
d=gcd(p1,p2)
Inv(a,b)
表示在模b意义下a的逆元。
证明这个定理:
x≡a1modp1
等价于
x=a1+p1⋅k1
(口头上可以这样说:
x
能表示成
a1
加
k1
倍
p1
的形式。)
x≡a2modp2
等价于
x=a2+p2⋅k2
(口头上可以这样说:
x
能表示成
a2
加
k2
倍
p2
的形式。)
(上式中的
k1,k2
均为整数)
那么我们就有对于所有可行的
k1,k2
,满足:
a1+p1⋅k1=a2+p2⋅k2
。
变化一下形式:
p1⋅k1=(a2−a1)+p2⋅k2
令
gcd(p1,p2)=d
,说明
d|(a2−a1)
。(
p1⋅k1−p2⋅k2=(a2−a1)
,所以
(a2−a1)
一定是d的倍数。)
这个时候,如果
d∤(a2−a1)
说明该方程组无解,否则有解。
把d这个因此除掉:
p1d⋅k1≡a2−a1d+p2d⋅k2
这个式子还能说明:
p1d⋅k1≡a2−a1dmodp2d
两边同时乘以
(p1d)−1
:
k1≡a2−a1d⋅(p1d)−1modp2d
即
k1=a2−a1d⋅Inv(p1d,p2d)+t⋅p2d
,现在我们可以把
k1
带回原式了。
x=a1+(a2−a1d⋅Inv(p1d,p2d)+t⋅p2d)⋅p1=a1+p1⋅a2−a1d⋅Inv(p1d,p2d)+p1⋅p2d⋅t
所以:
x=a1+p1⋅a2−a1d⋅Inv(p1d,p2d)modp1⋅p2d
得证。
主要思想:
证明的正确性仍然是依照中国剩余定理,证明的思路就是把参数
k1
用含有常数的模方程表示出来,然后再带回原式。