线性同余定理
简单来说就是解决同余式。 a x ≡ c m o d m ax\equiv c\ mod\ m ax≡c mod m
设 a a a , c c c 与 m m m 都是整数, m ≥ 1 m \geq 1 m≥1 ,且设 g = g c d ( a , m ) g = gcd(a,m) g=gcd(a,m)
(1) 若
g
g
g 不整除
c
c
c,则同余式
a
x
≡
c
(
m
o
d
m
)
ax\equiv c\ (mod\ m)
ax≡c (mod m)没有解。
(2) 若
g
∣
c
g | c
g∣c,则同余式
a
x
≡
c
m
o
d
m
ax\equiv c\ mod\ m
ax≡c mod m恰好有
g
g
g个不同的解。
首先根据欧几里得算法可以求出线性方程 a u + m v = g au+mv=g au+mv=g的一个解 ( u , v ) (u,v) (u,v)。则 x 0 = c u g x_0=\frac{cu}{g} x0=gcu是 a x ≡ c m o d m ax\equiv c\ mod\ m ax≡c mod m的一个特殊解,其余解为 x ≡ x 0 + k ∗ m g ( m o d m ) , k = 0 , 1 , . . . , g − 1 x \equiv x_0+k*\frac{m}{g}(mod \ m),k = 0,1,...,g-1 x≡x0+k∗gm(mod m),k=0,1,...,g−1
举例
1. 943 x ≡ 381 ( m o d 2576 ) 943x\equiv 381 (mod\ 2576) 943x≡381(mod 2576)
因为 g c d ( 943 , 2576 ) = 23 gcd(943,2576)=23 gcd(943,2576)=23不整除 381 381 381,所以该同余式无解。
2.
893
x
≡
266
(
m
o
d
2432
)
893x\equiv 266 (mod\ 2432)
893x≡266(mod 2432)
因为
g
c
d
(
893
,
2432
)
=
19
gcd(893,2432)=19
gcd(893,2432)=19整除
266
266
266,所以该同余式的解有19个。
首先,我们解方程
893
u
+
2432
v
=
19
893u+2432v=19
893u+2432v=19
得到
(
u
,
v
)
=
(
79
,
29
)
(u,v)=(79,29)
(u,v)=(79,29)
则特殊解为 x 0 = c u g = 1106 x_0=\frac{cu}{g}=1106 x0=gcu=1106
其余解 x ≡ x 0 + k ∗ m g ( m o d m ) x\equiv x_0+k*\frac{m}{g}(mod \ m) x≡x0+k∗gm(mod m),即
( 1234 , 1362 , 1490 , 1618 , 1746 , 1874 , 2002 , 2130 , 2258 , (1234,1362,1490,1618,1746,1874,2002,2130,2258, (1234,1362,1490,1618,1746,1874,2002,2130,2258,
2386 , 82 , 210 , 338 , 466 , 594 , 722 , 850 , 978 ) 2386,82,210,338,466,594,722,850,978) 2386,82,210,338,466,594,722,850,978)
推导过程
由同余式
a
x
≡
c
m
o
d
m
ax\equiv c\ mod\ m
ax≡c mod m可推出:
a
x
−
m
y
=
c
ax-my=c
ax−my=c
我们的任务就是求出这个线性方程。
首先,设
g
=
g
c
d
(
a
,
m
)
g = gcd(a,m)
g=gcd(a,m),则根据裴蜀定理可知:
a
u
−
m
v
=
g
au-mv=g
au−mv=g因此如果
g
g
g不整除
c
c
c,则该方程无解。
下面假设
g
∣
c
g|c
g∣c,则我们可以利用欧几里得算法求解
(
u
0
,
v
0
)
(u_0,v_0)
(u0,v0)
由于
g
∣
c
g|c
g∣c,则可以用
c
g
\frac{c}{g}
gc同乘式子两边,得到:
a
c
u
0
g
+
m
c
v
0
g
=
c
a\frac{cu_0}{g}+m\frac{cv_0}{g}=c
agcu0+mgcv0=c
所以我们可以得到一个特殊解: x 0 = c u 0 g ( m o d m ) x_0=\frac{cu_0}{g}(mod\ m) x0=gcu0(mod m)
设还有其余解
x
1
x_1
x1,则我们有
a
x
1
≡
a
x
0
(
m
o
d
m
)
ax_1\equiv ax_0 (mod\ m)
ax1≡ax0(mod m)
即:
a
(
x
1
−
x
0
)
=
k
m
a (x_1-x_0)=km
a(x1−x0)=km
同除
g
g
g,得:
a
g
(
x
1
−
x
0
)
=
k
m
g
\frac{a}{g} (x_1-x_0)=k\frac{m}{g}
ga(x1−x0)=kgm
因为
g
c
d
(
a
g
,
m
g
)
=
1
gcd(\frac{a}{g},\frac{m}{g})=1
gcd(ga,gm)=1,所以
m
g
∣
(
x
1
−
x
0
)
\frac{m}{g}|(x_1-x_0)
gm∣(x1−x0)
所以 x 1 = x 0 + k m g x_1=x_0+k\frac{m}{g} x1=x0+kgm,由于当 k = g k=g k=g时两个解是相等的,所以 k = 0 , 1 , . . . g − 1 k=0,1,...g-1 k=0,1,...g−1
参考书目:《A Friendly Introduction to Number Theory》