线性方程与最大公约数
已知两个整数
a
a
a和
b
b
b,我们观察
a
a
a的倍数和
b
b
b的倍数所有可能会得到的结果,也就是说,考察
a
x
+
b
y
ax+by
ax+by所得到的所有可能的结果,其中
x
x
x和
y
y
y取整数(可为负整数)。
设
a
=
42
,
b
=
30
a=42,b=30
a=42,b=30,
42
x
+
30
y
42x+30y
42x+30y的部分取值结果如下表所示:
仔细观察上表的结果,我们可以发现,表中所有的数值都可以被6整除,即
a
x
+
b
y
ax+by
ax+by的每个数都被
g
c
d
(
a
,
b
)
gcd(a,b)
gcd(a,b)整除;
因为
42
x
+
30
y
=
6
⋅
(
7
x
+
5
y
)
42x+30y=6\cdot(7x+5y)
42x+30y=6⋅(7x+5y),无论
7
x
+
5
y
7x+5y
7x+5y取任何整数,
6
⋅
(
7
x
+
5
y
)
6\cdot(7x+5y)
6⋅(7x+5y)都能被6整除;
当
7
x
+
5
y
=
1
7x+5y=1
7x+5y=1时,
42
x
+
30
y
42x+30y
42x+30y得到一个最小的正整数解6,即
42
⋅
2
+
30
⋅
3
=
6
=
g
c
d
(
42
,
30
)
.
42\cdot2+30\cdot3=6=gcd(42,30).
42⋅2+30⋅3=6=gcd(42,30).
于是,我们得到了以下的结论:
定理A 设
a
a
a和
b
b
b不全为0,则存在整数x和y使得
x
a
+
y
b
=
g
c
d
(
a
,
b
)
xa+yb=gcd(a,b)
xa+yb=gcd(a,b)
使用欧几里得原理来证明上述的定理。证明过程如下:
(1)当
b
=
0
b=0
b=0,
g
c
d
(
a
,
b
)
=
a
gcd(a,b)=a
gcd(a,b)=a,此时
x
=
1
,
y
=
0
x=1,y=0
x=1,y=0 ,
x
a
+
y
b
=
g
c
d
(
a
,
b
)
xa+yb=gcd(a,b)
xa+yb=gcd(a,b)成立。
(2)当a>b>0时,有
a
x
1
+
b
y
1
=
g
c
d
(
a
,
b
)
ax_1+by_1=gcd(a,b)
ax1+by1=gcd(a,b);
b
x
2
+
(
a
m
o
d
b
)
y
2
=
g
c
d
(
b
,
a
m
o
d
b
)
bx_2+(a\ mod \ b)y_2=gcd(b,a\ mod \ b)
bx2+(a mod b)y2=gcd(b,a mod b);
根据欧几里德原理,有
g
c
d
(
a
,
b
)
=
g
c
d
(
b
,
a
m
o
d
b
)
gcd(a,b)=gcd(b,a\ mod\ b)
gcd(a,b)=gcd(b,a mod b),可知:
a
x
1
+
b
y
1
=
b
x
2
+
(
a
m
o
d
b
)
y
2
=
b
x
2
+
(
a
−
⌊
a
÷
b
⌋
∗
b
)
y
2
ax_1+by_1=bx_2+(a\ mod \ b)y_2=bx_2+(a-\lfloor a\div b\rfloor *b)y_2
ax1+by1=bx2+(a mod b)y2=bx2+(a−⌊a÷b⌋∗b)y2
将上式展开,
a
x
1
+
b
y
1
=
a
y
2
+
b
(
x
2
−
⌊
a
÷
b
⌋
∗
y
2
)
ax_1+by_1=ay_2+b(x_2-\lfloor a\div b\rfloor*y_2)
ax1+by1=ay2+b(x2−⌊a÷b⌋∗y2)
可得
x
1
=
y
2
,
y
1
=
x
2
−
⌊
a
÷
b
⌋
∗
y
2
x_1=y_2,y1=x_2-\lfloor a\div b\rfloor*y_2
x1=y2,y1=x2−⌊a÷b⌋∗y2
假设我们已经求出了
x
2
x_2
x2和
y
2
y_2
y2,通过上面的公式我们就得到了求
x
1
x_1
x1和
y
1
y_1
y1的方法。
由
g
c
d
(
a
,
b
)
=
g
c
d
(
b
,
a
%
b
=
r
1
)
=
g
c
d
(
r
1
,
b
%
r
1
=
r
2
)
=
g
c
d
(
r
2
,
r
1
%
r
2
=
r
3
)
=
.
.
.
=
g
c
d
(
r
k
−
3
,
r
k
−
4
%
r
k
−
3
)
=
g
c
d
(
r
k
−
2
,
0
)
=
r
k
−
1
gcd(a,b)=gcd(b,a\%b=r_1)=gcd(r_1,b\%r_1=r_2)=gcd(r_2,r1\%r_2=r3)=...=gcd(r_{k-3},r_{k-4}\%r_{k-3})=gcd(r_{k-2},0)=r_{k-1}
gcd(a,b)=gcd(b,a%b=r1)=gcd(r1,b%r1=r2)=gcd(r2,r1%r2=r3)=...=gcd(rk−3,rk−4%rk−3)=gcd(rk−2,0)=rk−1可知,
使用欧几里德方法计算到最后一步时(即
g
c
d
(
r
k
−
1
,
0
)
=
r
k
−
1
gcd(r_{k-1},0)=r_{k-1}
gcd(rk−1,0)=rk−1),这时
x
k
=
1
,
y
k
=
0
x_k=1,y_k=0
xk=1,yk=0,通过(
x
k
,
y
k
x_k,y_k
xk,yk) 的值就可以依次求出(
x
k
−
1
,
y
k
−
1
x_{k-1},y_{k-1}
xk−1,yk−1),(
x
k
−
2
,
y
k
−
2
x_{k-2},y_{k-2}
xk−2,yk−2)…(
x
3
,
y
3
x_3,y_3
x3,y3),(
x
2
,
y
2
x_2,y_2
x2,y2),(
x
1
,
y
1
x_1,y_1
x1,y1)的值。计算过程如下图所示:
综上所述,可以证明定理A成立。
例.求线性方程
22
x
+
60
y
=
g
c
d
(
22
,
60
)
22x+60y=gcd(22,60)
22x+60y=gcd(22,60)
解:
(1)
22
x
1
+
60
y
1
=
g
c
d
(
22
,
60
)
22x_1+60y_1=gcd(22,60)
22x1+60y1=gcd(22,60)
(2)
60
x
2
+
20
y
2
=
g
c
d
(
60
,
22
%
60
=
22
)
60x_2+20y_2=gcd(60,22\%60=22)
60x2+20y2=gcd(60,22%60=22)
(3)
22
x
3
+
16
y
3
=
g
c
d
(
22
,
60
%
22
=
16
)
22x_3+16y_3=gcd(22,60\%22=16)
22x3+16y3=gcd(22,60%22=16)
(4)
16
x
4
+
6
y
4
=
g
c
d
(
16
,
22
%
16
=
6
)
16x_4+6y_4=gcd(16,22\%16=6)
16x4+6y4=gcd(16,22%16=6)
(5)
6
x
5
+
4
y
5
=
g
c
d
(
6
,
16
%
6
=
4
)
6x_5+4y_5=gcd(6,16\%6=4)
6x5+4y5=gcd(6,16%6=4)
(6)
4
x
6
+
2
y
6
=
g
c
d
(
4
,
6
%
4
=
2
)
4x_6+2y_6=gcd(4,6\%4=2)
4x6+2y6=gcd(4,6%4=2)
(7)
=
g
c
d
(
2
,
4
%
2
=
0
)
=
2
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =gcd(2,4\%2=0)=2
=gcd(2,4%2=0)=2,此时
x
7
=
1
,
y
7
=
0
x_7=1,y_7=0
x7=1,y7=0
由
x
k
−
1
=
y
k
,
y
k
−
1
=
x
k
−
⌊
a
÷
b
⌋
∗
y
k
x_{k-1}=y_{k},y_{k-1}=x_k-\lfloor a\div b\rfloor*y_k
xk−1=yk,yk−1=xk−⌊a÷b⌋∗yk可以求出:
(6)
x
6
=
y
7
=
0
,
y
6
=
x
7
−
⌊
4
÷
2
⌋
∗
y
7
=
1
x_6=y_7=0,y_6=x_7-\lfloor 4\div 2\rfloor*y_7=1
x6=y7=0,y6=x7−⌊4÷2⌋∗y7=1
(5)
x
5
=
y
6
=
1
,
y
5
=
x
6
−
⌊
6
÷
4
⌋
∗
y
6
=
−
1
x_5=y_6=1,y_5=x_6-\lfloor 6\div 4\rfloor*y_6=-1
x5=y6=1,y5=x6−⌊6÷4⌋∗y6=−1
(4)
x
4
=
y
5
=
−
1
,
y
4
=
x
5
−
⌊
16
÷
6
⌋
∗
y
5
=
3
x_4=y_5=-1,y_4=x_5-\lfloor 16\div 6\rfloor*y_5=3
x4=y5=−1,y4=x5−⌊16÷6⌋∗y5=3
(3)
x
3
=
y
4
=
3
,
y
3
=
x
4
−
⌊
22
÷
16
⌋
∗
y
4
=
−
4
x_3=y_4=3,y_3=x_4-\lfloor 22\div 16\rfloor*y_4=-4
x3=y4=3,y3=x4−⌊22÷16⌋∗y4=−4
(2)
x
2
=
y
3
=
−
4
,
y
2
=
x
3
−
⌊
60
÷
22
⌋
∗
y
3
=
11
x_2=y_3=-4,y_2=x_3-\lfloor 60\div 22\rfloor*y_3=11
x2=y3=−4,y2=x3−⌊60÷22⌋∗y3=11
(1)
x
1
=
y
2
=
11
,
y
1
=
x
2
−
⌊
22
÷
60
⌋
∗
y
2
=
−
4
x_1=y_2=11,y_1=x_2-\lfloor 22\div 60\rfloor*y_2=-4
x1=y2=11,y1=x2−⌊22÷60⌋∗y2=−4
所以方程的一组解为
x
≡
11
(
m
o
d
60
)
x≡11 (mod\ 60)
x≡11(mod 60)
求解的代码如下:
int exGcd(int a,int b,int &x,int &y) {
if(b==0) {
x = 1;
y = 0;
return a;
}
int r = exGcd(b,a%b,x,y);
t = x;
x = y;
y = t-a/b*y;
return r;
}
线性方程
定理B 整数
a
a
a和
b
b
b互素的充分必要条件是存在整数
x
x
x和
y
y
y使得
x
a
+
y
b
=
1.
xa+yb=1.
xa+yb=1.
证明:
必要性: 由上述的 [定理A] 可得出,如果
x
a
+
y
b
=
1
xa+yb=1
xa+yb=1,当
g
c
d
(
a
,
b
)
=
1
gcd(a,b)=1
gcd(a,b)=1时,方程有解。
充分性:
设
d
>
0
d>0
d>0且
d
d
d是
a
a
a和
b
b
b的公因子,则有
d
∣
a
,
d
∣
b
→
d
∣
x
a
+
y
b
→
d
∣
1.
d|a,d|b \ \ \ \rightarrow d|xa+yb\ \ \ \rightarrow d|1.
d∣a,d∣b →d∣xa+yb →d∣1.
再由性质【如果
a
∣
b
a|b
a∣b且
b
≠
0
b≠0
b=0,则
∣
a
∣
≤
∣
b
∣
|a|≤|b|
∣a∣≤∣b∣】得出结论,
d
=
1
d=1
d=1,得证
a
a
a与
b
b
b互素.
假如
g
c
d
(
a
,
b
)
=
1
,
(
x
1
,
y
1
)
gcd(a,b)=1,(x_1,y_1)
gcd(a,b)=1,(x1,y1)是方程
a
x
+
b
y
=
1
ax+by=1
ax+by=1的一个解。
通过
x
1
x_1
x1减去
b
b
b的倍数和
y
1
y_1
y1加上
a
a
a的相同倍数,可以得到其它解,也就是说,对于任何整数
k
k
k,我们得到其它解为
(
x
1
+
k
b
,
y
1
−
k
a
)
(x_1+kb,y_1-ka)
(x1+kb,y1−ka)(
k
k
k为整数)
a
(
x
1
+
k
b
)
+
b
(
y
1
−
k
a
)
=
a
x
1
+
a
k
b
+
b
y
1
−
b
k
a
=
a
x
1
+
b
y
1
=
1.
a(x_1+kb)+b(y_1-ka)=ax_1+akb+by_1-bka=ax_1+by_1=1.
a(x1+kb)+b(y1−ka)=ax1+akb+by1−bka=ax1+by1=1.
例如
5
x
+
3
y
=
1
5x+3y=1
5x+3y=1的一个解为
(
−
1
,
2
)
(-1,2)
(−1,2),在此基础上可能得到新解
(
−
1
+
3
k
,
2
−
5
k
)
(-1+3k,2-5k)
(−1+3k,2−5k)通过k的值可以得到一些解
.
.
.
,
(
−
13
,
22
)
,
(
−
10
,
17
)
,
(
−
7
,
12
)
,
(
−
4
,
7
)
,
(
−
1
,
2
)
,
(
2
,
−
3
)
.
.
.
...,(-13,22),(-10,17),(-7,12),(-4,7),(-1,2),(2,-3)...
...,(−13,22),(−10,17),(−7,12),(−4,7),(−1,2),(2,−3)...
如果 g c d ( a , b ) > 1 gcd(a,b)>1 gcd(a,b)>1情况会如何呢?
线性方程定理
因为
g
g
g整除
a
a
a与
b
b
b,我们令
g
=
g
c
d
(
a
,
b
)
g=gcd(a,b)
g=gcd(a,b),故
(
x
1
,
y
1
)
(x_1,y_1)
(x1,y1)是简单方程
a
g
x
+
b
g
y
=
1
\frac{a}{g}x+\frac{b}{g}y=1
gax+gby=1的解,根据前面的方法,通过将
k
k
k的值代入
(
x
1
+
k
⋅
b
g
,
y
1
−
k
⋅
a
g
)
(x_1+k\cdot\frac{b}{g},y_1-k\cdot\frac{a}{g})
(x1+k⋅gb,y1−k⋅ga)
可以得到其他解。
例.
60
x
+
22
y
=
g
c
d
(
60
,
22
)
=
2
60x+22y=gcd(60,22)=2
60x+22y=gcd(60,22)=2,方程有解,求出其中一个解为:
x
=
−
4
,
y
=
11
x=-4,y=11
x=−4,y=11,
由线性方程定理可知每个解都可以由公式
(
−
4
+
11
k
,
11
−
30
k
)
(-4+11k,11-30k)
(−4+11k,11−30k)(
k
k
k为整数)得到;
当
k
=
1
k=1
k=1时,
x
x
x是最小的正整数解。
同余的定义
设 m m m是正整数, a a a和 b b b是整数,如果 m ∣ a − b m|a-b m∣a−b,则称 a a a模 m m m同余于 b b b,或 a a a与 b b b模 m m m同余,记作 a ≡ b ( m o d m ) a≡b(mod\quad m) a≡b(modm).如果 a a a与 b b b不同余,则记作 a ≠ b ( m o d m ) a≠b (mod\quad m) a=b(modm)
a
a
a与
b
b
b同余的充分必要条件:
(1)
a
a
a与
b
b
b除以
m
m
m的余数相同,即
a
m
o
d
m
=
b
m
o
d
m
a\ mod\ m=b\ mod\ m
a mod m=b mod m.
(2)
a
=
b
+
k
m
a=b+km
a=b+km,其中
k
k
k是整数.
同余的性质
性质1 自反性:
a
≡
a
(
m
o
d
m
)
a≡a(mod\quad m)
a≡a(modm)
性质2 传递性
a
≡
b
(
m
o
d
m
)
,
b
≡
c
(
m
o
d
m
)
→
a
≡
c
(
m
o
d
m
)
a≡b(mod\quad m),b≡c(mod\quad m) \rightarrow a≡c(mod\quad m)
a≡b(modm),b≡c(modm)→a≡c(modm)
性质3 对称性
a
≡
b
(
m
o
d
m
)
→
b
≡
a
(
m
o
d
m
)
a≡b(mod\quad m) \rightarrow b≡a(mod\quad m)
a≡b(modm)→b≡a(modm)
由传递性,常把
a
1
≡
a
2
(
m
o
d
m
)
,
a
2
≡
a
3
(
m
o
d
m
)
,
a
k
−
1
≡
a
k
(
m
o
d
m
)
写
成
a
1
≡
a
2
≡
.
.
.
a
k
(
m
o
d
m
)
a_1≡a_2(mod\quad m),a_2≡a_3(mod\quad m),a_{k-1}≡a_k(mod\quad m)写成a_1≡a_2≡...a_k(mod\quad m)
a1≡a2(modm),a2≡a3(modm),ak−1≡ak(modm)写成a1≡a2≡...ak(modm)
性质4 模算术运算
若
a
≡
b
(
m
o
d
m
)
,
c
≡
d
(
m
o
d
m
)
,
则
a
±
c
≡
b
±
d
(
m
o
d
m
)
,
a
c
≡
b
d
(
m
o
d
m
)
a≡b(mod\ m),c≡d(mod\ m),则a\pm c≡b \pm d(mod \ m),ac≡bd(mod\ m)
a≡b(mod m),c≡d(mod m),则a±c≡b±d(mod m),ac≡bd(mod m)
a
k
≡
b
k
(
m
o
d
m
)
a^k≡b^k(mod\ m)
ak≡bk(mod m),其中
k
k
k是非负整数。
性质4 的证明
以
a
≡
b
(
m
o
d
m
)
,
c
≡
d
(
m
o
d
m
)
a≡b(mod\ m),c≡d(mod\ m)
a≡b(mod m),c≡d(mod m),则
a
+
c
≡
b
+
d
(
m
o
d
m
)
a+ c≡b+ d (mod \ m)
a+c≡b+d(mod m)为例
a
≡
b
(
m
o
d
m
)
→
a
=
b
+
k
1
⋅
m
a≡b(mod \ m) \rightarrow a=b+k_1\cdot m
a≡b(mod m)→a=b+k1⋅m
c
≡
d
(
m
o
d
m
)
→
c
=
d
+
k
2
⋅
m
c≡d(mod \ m) \rightarrow c=d+k_2 \cdot m
c≡d(mod m)→c=d+k2⋅m
两式相加,可得
a
+
c
≡
b
+
d
+
(
k
1
+
k
2
)
⋅
m
a+c≡b+d+(k_1+k_2)\cdot m
a+c≡b+d+(k1+k2)⋅m,又因为
k
1
+
k
2
k_1+k_2
k1+k2 为整数,
a
+
c
≡
b
+
d
+
(
k
1
+
k
2
)
⋅
m
→
a
+
c
≡
b
+
d
(
m
o
d
m
)
a+c≡b+d+(k_1+k_2)\cdot m \ \ \rightarrow \ a+c≡b+d(mod \ m)
a+c≡b+d+(k1+k2)⋅m → a+c≡b+d(mod m)
其它的性质证明过程也一样,这里不再赘述。
性质5
设
c
c
c与
m
m
m互素,则
a
≡
b
(
m
o
d
m
)
↔
c
a
≡
c
b
(
m
o
d
m
)
a≡b(mod\ m)\leftrightarrow ca≡cb(mod \ m)
a≡b(mod m)↔ca≡cb(mod m)
性质5证明
符合条件的例子:
3
≡
8
(
m
o
d
5
)
3≡8(mod\ 5)
3≡8(mod 5),设
c
=
2
c=2
c=2,其中3和5互素,得到
6
≡
16
(
m
o
d
5
)
6≡16(mod\ 5)
6≡16(mod 5)
不符合条件的例子:
15
⋅
2
≡
20
⋅
2
(
m
o
d
10
)
15 \cdot 2≡20 \cdot 2(mod\ 10)
15⋅2≡20⋅2(mod 10),15和20不互素且
g
c
d
(
15
,
20
)
=
5
gcd(15,20)=5
gcd(15,20)=5,得到
15
≠
20
(
m
o
d
10
)
15≠20(mod\ 10)
15=20(mod 10)
(1)对于任意的整数
c
c
c和
m
m
m,可得出
a
≡
b
(
m
o
d
m
)
→
c
a
≡
c
b
(
m
o
d
m
)
a≡b(mod\ m)\rightarrow ca≡cb(mod \ m)
a≡b(mod m)→ca≡cb(mod m)
证明过程和性质4的过程相同,略。
(2)现在来证明
c
a
≡
c
b
(
m
o
d
m
)
→
a
≡
b
(
m
o
d
m
)
ca≡cb(mod \ m) \rightarrow a≡b(mod\ m)
ca≡cb(mod m)→a≡b(mod m)
由
c
a
≡
c
b
(
m
o
d
m
)
ca≡cb(mod \ m)
ca≡cb(mod m)可知,
m
∣
c
a
−
c
b
m|ca-cb
m∣ca−cb,即
m
∣
c
⋅
(
a
−
b
)
m|c\cdot (a-b)
m∣c⋅(a−b)
又因为
c
c
c和
m
m
m互素,必然得到
m
∣
a
−
b
m|a-b
m∣a−b,可得
a
≡
b
(
m
o
d
m
)
a≡b(mod\ m)
a≡b(mod m)
练习
3
455
3^{455}
3455的个位数是多少?
解:设
3
455
3^{455}
3455的个位数为x,则有
3
455
≡
x
(
m
o
d
10
)
.
3^{455}≡x(mod \ 10).
3455≡x(mod 10).由
3
4
≡
1
(
m
o
d
10
)
3^4≡1(mod \ 10)
34≡1(mod 10)和性质4可得:
3
455
≡
3
4
∗
333
+
3
≡
3
3
≡
7
(
m
o
d
10
)
3^{455}≡3^{4*333+3}≡3^3≡7(mod \ 10)
3455≡34∗333+3≡33≡7(mod 10)
故
3
455
3^{455}
3455的个位数是 7 .
一次同余方程
定义
设
m
>
0
m>0
m>0,方程
a
x
≡
c
(
m
o
d
m
)
ax \equiv c(mod\ m)
ax≡c(mod m) 称作一次同余方程,使式子成立的整数为方程的解。
一次同余方程
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.
例1. 有同余方程
5
x
≡
1
(
m
o
d
10
)
5x \equiv1(mod\ 10)
5x≡1(mod 10),此方程有解的前提是
10
∣
5
x
−
1
10|5x-1
10∣5x−1,此方程无解。
例2. 有同余方程
2
x
≡
1
(
m
o
d
3
)
2x\equiv 1(mod \ 3)
2x≡1(mod 3),此方程有解的前提是
3
∣
2
x
−
1
3|2x-1
3∣2x−1,我们很容易的可以得出其中的一个解
x
=
2
x=2
x=2,当然,
x
=
5
x=5
x=5和
x
=
8
x=8
x=8也是方程的一个解,实际上,同余方程只要有解,就有无数个解,解可以表示为
x
=
2
+
3
k
x=2+3k
x=2+3k (
k
k
k为整数),即
x
≡
1
(
m
o
d
3
)
x\equiv 1(mod \ 3)
x≡1(mod 3)。
对于同于方程
a
x
≡
c
(
m
o
d
m
)
ax \equiv c(mod\ m)
ax≡c(mod m),假设
x
0
x_0
x0是方程的一个解,同余方程的通解为
x
≡
x
0
(
m
o
d
m
)
x\equiv x_0(mod \ m)
x≡x0(mod m)
我们可以简单的证明一下:
假设
x
0
x_0
x0是同余方程
a
x
≡
c
(
m
o
d
m
)
ax \equiv c(mod\ m)
ax≡c(mod m)的一个解,
由
m
∣
a
x
−
c
m|ax-c
m∣ax−c推出
m
∣
a
(
x
+
m
)
−
c
.
m|a(x+m)-c.
m∣a(x+m)−c.
m
∣
a
(
x
+
m
)
−
c
→
m
∣
a
x
−
c
+
a
m
m|a(x+m)-c\rightarrow m|ax-c+am
m∣a(x+m)−c→m∣ax−c+am
m
∣
a
x
−
c
,
m
∣
a
m
→
m
∣
a
(
x
+
m
)
−
c
.
m|ax-c \ \ ,m|am\rightarrow m|a(x+m)-c.
m∣ax−c ,m∣am→m∣a(x+m)−c.
同余方程可以使用线性方程来表示,之前所说的线性方程定理也证明了这个结论是正确的。
对于有的同余方程来说,可能不止一个通解,比如同余方程 4 x ≡ 2 ( m o d 6 ) 4x \equiv 2(mod\ 6) 4x≡2(mod 6)有两个通解,即 x 0 ≡ 2 ( m o d 6 ) x_0\equiv 2(mod \ 6) x0≡2(mod 6)和 x 1 ≡ 5 ( m o d 6 ) x_1\equiv 5(mod \ 6) x1≡5(mod 6)。
如何计算出所有的通解,只需要计算出所有通解的最小正整数解就行了, a x ≡ c ( m o d m ) ax \equiv c(mod\ m) ax≡c(mod m)的最小正整数解的范围为 0 , 1 , 2 , . . . m − 1 0,1,2,...m-1 0,1,2,...m−1,枚举这个范围的每一个数是否符合要求就可以了。
例:求解同余方程
4
x
≡
2
(
m
o
d
6
)
4x \equiv 2(mod\ 6)
4x≡2(mod 6)
x
=
0
x=0
x=0时,
4
∗
0
≡
0
(
m
o
d
6
)
4*0 \equiv 0(mod\ 6)
4∗0≡0(mod 6)
x
=
1
x=1
x=1时,
4
∗
1
≡
4
(
m
o
d
6
)
4*1 \equiv 4(mod\ 6)
4∗1≡4(mod 6) 一个解。
x
=
2
x=2
x=2时,
4
∗
2
≡
2
(
m
o
d
6
)
4*2 \equiv 2(mod\ 6)
4∗2≡2(mod 6)
x
=
3
x=3
x=3时,
4
∗
3
≡
0
(
m
o
d
6
)
4*3 \equiv 0(mod\ 6)
4∗3≡0(mod 6)
x
=
4
x=4
x=4时,
4
∗
4
≡
4
(
m
o
d
6
)
4*4 \equiv 4(mod\ 6)
4∗4≡4(mod 6)
x
=
5
x=5
x=5时,
4
∗
5
≡
2
(
m
o
d
6
)
4*5 \equiv 2(mod\ 6)
4∗5≡2(mod 6) 一个解。
如果同余方程
a
x
+
m
y
=
c
ax+my=c
ax+my=c 有解,设
d
=
g
c
d
(
a
,
m
)
d=gcd(a,m)
d=gcd(a,m),方程在模m下有d个不同余的解。
证明:
假设
a
x
1
ax_1
ax1是同余式
a
x
≡
c
(
m
o
d
m
)
ax\equiv c(mod \ m)
ax≡c(mod m)的其它解,
d
=
g
c
d
(
a
,
m
)
d=gcd(a,m)
d=gcd(a,m)
则有
a
x
1
≡
a
x
0
(
m
o
d
m
)
ax_1\equiv ax_0 (mod m)
ax1≡ax0(modm)——》
m
m
m整除
a
x
1
−
a
x
0
ax_1-ax_0
ax1−ax0.
同时除掉公约数
d
d
d,则有:
m
d
∣
a
(
x
1
−
x
0
)
d
\frac{m}{d} | \frac{a(x_1-x_0)}{d}
dm∣da(x1−x0)
又证明
g
c
d
(
m
d
,
a
d
)
=
1
gcd(\frac{m}{d},\frac{a}{d})=1
gcd(dm,da)=1,必然有
m
d
∣
(
x
1
−
x
0
)
.
\frac{m}{d}|(x_1-x_0).
dm∣(x1−x0).
综上所述,存在整数
k
k
k,使得:
x
1
=
x
0
+
k
m
d
,
k
=
0
,
1
,
2...
x_1=x_0+k\frac{m}{d}\ \ ,\ k=0,1,2...
x1=x0+kdm , k=0,1,2...
由 m m m的倍数所得的任何两个不同解被认为是相同的,所以恰好有d个不同的解。当 k = d k=d k=d时, x 1 x_1 x1和 x 0 x_0 x0是模 m m m同余的,属于同一个解。
裴蜀定理
我们可以使用裴蜀定理,判断一次同余方程是否有解
对于同余方程
a
≡
c
(
m
o
d
m
)
a\equiv c(mod \ m)
a≡c(mod m) (也可写作:
a
x
+
m
y
=
c
ax+my=c
ax+my=c) 有解的充分必要条件
g
c
d
(
a
,
m
)
∣
c
gcd(a,m)|c
gcd(a,m)∣c,有解时必然有无穷多个解。
证明
充分性:
记
d
=
g
c
d
(
a
,
m
)
,
a
=
d
a
1
,
m
=
d
m
1
,
c
=
d
c
1
d=gcd(a,m),a=da_1,m=dm_1,c=dc_1
d=gcd(a,m),a=da1,m=dm1,c=dc1其中
a
1
a_1
a1和
m
1
m_1
m1互素。
由定理B 可知,存在
x
1
x_1
x1和
y
1
y_1
y1使得
a
1
x
1
+
m
1
y
1
=
1.
a_1x_1+m_1y_1=1.
a1x1+m1y1=1.
令
x
=
c
1
x
1
,
y
=
c
1
y
1
x=c_1x_1,y=c_1y_1
x=c1x1,y=c1y1,得
a
1
x
+
m
1
y
=
c
1
a_1x+m_1y=c_1
a1x+m1y=c1,等式两边同乘
d
d
d,得
a
x
+
m
y
=
c
ax+my=c
ax+my=c.
必要性:
设
x
0
x_0
x0是方程的解,则存在
y
y
y使得
a
x
+
m
y
=
c
ax+my=c
ax+my=c.
由性质【如果
d
∣
x
,
d
∣
y
d|x,d|y
d∣x,d∣y,对任意整数
x
,
y
x,y
x,y,有
d
∣
a
x
+
m
y
d|ax+my
d∣ax+my】可得,
d
∣
c
d|c
d∣c.
EXGCD求解一次同余方程
同余方程
a
x
+
m
y
=
c
ax+my=c
ax+my=c 有解的充分必要条件是
g
c
d
(
a
,
m
)
∣
c
gcd(a,m)|c
gcd(a,m)∣c.
如果同余方程
a
x
+
m
y
=
c
ax+my=c
ax+my=c有解,
因为
g
c
d
(
a
,
m
)
∣
c
gcd(a,m)|c
gcd(a,m)∣c.设
x
=
x
′
⋅
c
g
c
d
(
a
,
m
)
y
=
y
′
⋅
c
g
c
d
(
a
,
m
)
x=x'\cdot \frac{c}{gcd(a,m)}\ y=y'\cdot \frac{c}{gcd(a,m)}
x=x′⋅gcd(a,m)c y=y′⋅gcd(a,m)c
a
x
′
⋅
c
g
c
d
(
a
,
m
)
+
m
y
′
⋅
c
g
c
d
(
a
,
m
)
=
g
c
d
(
a
,
m
)
⋅
c
g
c
d
(
a
,
m
)
=
a
x
+
m
y
=
c
ax'\cdot \frac{c}{gcd(a,m)} +my'\cdot \frac{c}{gcd(a,m)}=gcd(a,m)\cdot \frac{c}{gcd(a,m)}=ax+my=c
ax′⋅gcd(a,m)c+my′⋅gcd(a,m)c=gcd(a,m)⋅gcd(a,m)c=ax+my=c
上述的定理A说明
a
x
′
+
m
y
′
=
g
c
d
(
a
,
m
)
ax'+my'=gcd(a,m)
ax′+my′=gcd(a,m)有解,使用扩展欧几里德求出此方程的解
(
x
′
,
y
′
)
(x',y')
(x′,y′),再求出
a
x
+
m
y
=
c
ax+my=c
ax+my=c的解,也就是:
(
x
=
x
′
⋅
c
g
c
d
(
a
,
m
)
,
y
=
y
′
⋅
c
g
c
d
(
a
,
m
)
x=x'\cdot \frac{c}{gcd(a,m)}\ , y=y'\cdot \frac{c}{gcd(a,m)}
x=x′⋅gcd(a,m)c ,y=y′⋅gcd(a,m)c)
例:求解同余方程
18
x
≡
8
(
m
o
d
22
)
.
18x\equiv8(mod\ 22).
18x≡8(mod 22).
解:
求解线性方程
18
x
+
22
y
=
8
18x+22y=8
18x+22y=8
因为
g
c
d
(
18
,
22
)
=
2
gcd(18,22)=2
gcd(18,22)=2,2能整除8,方程有解.
先求解方程
18
u
+
22
v
=
g
c
d
(
18
,
22
)
=
2
18u+22v=gcd(18,22)=2
18u+22v=gcd(18,22)=2,使用扩展欧几里德求出
u
=
5
,
v
=
4
u=5,v=4
u=5,v=4,
又因为:
18
x
+
22
y
=
8
18x+22y=8
18x+22y=8 ①
18
u
+
22
v
=
2
18u+22v=2
18u+22v=2 ②
①式是②式的4倍,可求出
x
=
4
⋅
u
=
20
,
y
=
4
⋅
v
=
16.
x=4\cdot u=20,y=4\cdot v=16.
x=4⋅u=20,y=4⋅v=16.(
y
y
y的值为多少其实不重要)
所以
x
≡
20
(
m
o
d
22
)
x\equiv 20(mod\ 22)
x≡20(mod 22)是同余式的一个解。
因为
g
c
d
(
18
,
22
)
=
2
gcd(18,22)=2
gcd(18,22)=2,因此同余式有两个不同余的解,另一个解为
20
+
22
2
=
31
20+\frac{22}{2}=31
20+222=31,即
x
≡
31
(
m
o
d
22
)
x\equiv 31(mod\ 22)
x≡31(mod 22),不过我们一般倾向于用最小的正整数来表示解,上式可表示为
x
≡
9
(
m
o
d
22
)
x\equiv 9(mod\ 22)
x≡9(mod 22)