简单来说就是解决同余式。 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》