余数(一)

线性方程与最大公约数

已知两个整数 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的部分取值结果如下表所示:
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). 422+303=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+(aa÷bb)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(x2a÷by2)
可得 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=x2a÷by2
假设我们已经求出了 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(rk3,rk4%rk3)=gcd(rk2,0)=rk1可知,
使用欧几里德方法计算到最后一步时(即 g c d ( r k − 1 , 0 ) = r k − 1 gcd(r_{k-1},0)=r_{k-1} gcd(rk1,0)=rk1),这时 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} xk1,yk1),( x k − 2 , y k − 2 x_{k-2},y_{k-2} xk2,yk2)…( 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)的值。计算过程如下图所示:
Exgcd计算过程
综上所述,可以证明定理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 xk1=yk,yk1=xka÷byk可以求出:
(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=x74÷2y7=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=x66÷4y6=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=x516÷6y5=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=x422÷16y4=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=x360÷22y3=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=x222÷60y2=4
所以方程的一组解为 x ≡ 11 ( m o d   60 ) x≡11 (mod\ 60) x11(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. da,db   dxa+yb   d1.
再由性质【如果 a ∣ b a|b ab b ≠ 0 b≠0 b=0,则 ∣ a ∣ ≤ ∣ b ∣ |a|≤|b| ab】得出结论, 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,y1ka)( 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(y1ka)=ax1+akb+by1bka=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,25k)通过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+kgb,y1kga)
可以得到其他解。

例. 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,1130k) 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 mab,则称 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) ab(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) aa(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) ab(modm),bc(modm)ac(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) ab(modm)ba(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) a1a2(modm),a2a3(modm),ak1ak(modm)a1a2...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) ab(mod m),cd(mod m),a±cb±d(mod m),acbd(mod m)
a k ≡ b k ( m o d   m ) a^k≡b^k(mod\ m) akbk(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) ab(mod m),cd(mod m),则 a + c ≡ b + d ( m o d   m ) a+ c≡b+ d (mod \ m) a+cb+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 ab(mod m)a=b+k1m
c ≡ d ( m o d   m ) → c = d + k 2 ⋅ m c≡d(mod \ m) \rightarrow c=d+k_2 \cdot m cd(mod m)c=d+k2m
两式相加,可得 a + c ≡ b + d + ( k 1 + k 2 ) ⋅ m a+c≡b+d+(k_1+k_2)\cdot m a+cb+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+cb+d+(k1+k2)m   a+cb+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) ab(mod m)cacb(mod m)

性质5证明
符合条件的例子: 3 ≡ 8 ( m o d   5 ) 3≡8(mod\ 5) 38(mod 5),设 c = 2 c=2 c=2,其中3和5互素,得到 6 ≡ 16 ( m o d   5 ) 6≡16(mod\ 5) 616(mod 5)
不符合条件的例子: 15 ⋅ 2 ≡ 20 ⋅ 2 ( m o d   10 ) 15 \cdot 2≡20 \cdot 2(mod\ 10) 152202(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) ab(mod m)cacb(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) cacb(mod m)ab(mod m)
c a ≡ c b ( m o d   m ) ca≡cb(mod \ m) cacb(mod m)可知, m ∣ c a − c b m|ca-cb mcacb,即 m ∣ c ⋅ ( a − b ) m|c\cdot (a-b) mc(ab)
又因为 c c c m m m互素,必然得到 m ∣ a − b m|a-b mab,可得 a ≡ b ( m o d   m ) a≡b(mod\ m) ab(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). 3455x(mod 10). 3 4 ≡ 1 ( m o d   10 ) 3^4≡1(mod \ 10) 341(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) 345534333+3337(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) axc(mod m) 称作一次同余方程,使式子成立的整数为方程的解。
一次同余方程 a x ≡ c ( m o d   m ) ax \equiv c(mod\ m) axc(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) 5x1(mod 10),此方程有解的前提是 10 ∣ 5 x − 1 10|5x-1 105x1,此方程无解。
例2. 有同余方程 2 x ≡ 1 ( m o d   3 ) 2x\equiv 1(mod \ 3) 2x1(mod 3),此方程有解的前提是 3 ∣ 2 x − 1 3|2x-1 32x1,我们很容易的可以得出其中的一个解 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) x1(mod 3)

对于同于方程 a x ≡ c ( m o d   m ) ax \equiv c(mod\ m) axc(mod m),假设 x 0 x_0 x0是方程的一个解,同余方程的通解为 x ≡ x 0 ( m o d   m ) x\equiv x_0(mod \ m) xx0(mod m)
我们可以简单的证明一下:
假设 x 0 x_0 x0是同余方程 a x ≡ c ( m o d   m ) ax \equiv c(mod\ m) axc(mod m)的一个解,
m ∣ a x − c m|ax-c maxc推出 m ∣ a ( x + m ) − c . m|a(x+m)-c. ma(x+m)c.
m ∣ a ( x + m ) − c → m ∣ a x − c + a m m|a(x+m)-c\rightarrow m|ax-c+am ma(x+m)cmaxc+am
m ∣ a x − c    , m ∣ a m → m ∣ a ( x + m ) − c . m|ax-c \ \ ,m|am\rightarrow m|a(x+m)-c. maxc  ,mamma(x+m)c.
同余方程可以使用线性方程来表示,之前所说的线性方程定理也证明了这个结论是正确的。

对于有的同余方程来说,可能不止一个通解,比如同余方程 4 x ≡ 2 ( m o d   6 ) 4x \equiv 2(mod\ 6) 4x2(mod 6)有两个通解,即 x 0 ≡ 2 ( m o d   6 ) x_0\equiv 2(mod \ 6) x02(mod 6) x 1 ≡ 5 ( m o d   6 ) x_1\equiv 5(mod \ 6) x15(mod 6)

如何计算出所有的通解,只需要计算出所有通解的最小正整数解就行了, a x ≡ c ( m o d   m ) ax \equiv c(mod\ m) axc(mod m)的最小正整数解的范围为 0 , 1 , 2 , . . . m − 1 0,1,2,...m-1 0,1,2,...m1,枚举这个范围的每一个数是否符合要求就可以了。

例:求解同余方程 4 x ≡ 2 ( m o d   6 ) 4x \equiv 2(mod\ 6) 4x2(mod 6)
x = 0 x=0 x=0时, 4 ∗ 0 ≡ 0 ( m o d   6 ) 4*0 \equiv 0(mod\ 6) 400(mod 6)
x = 1 x=1 x=1时, 4 ∗ 1 ≡ 4 ( m o d   6 ) 4*1 \equiv 4(mod\ 6) 414(mod 6) 一个解。
x = 2 x=2 x=2时, 4 ∗ 2 ≡ 2 ( m o d   6 ) 4*2 \equiv 2(mod\ 6) 422(mod 6)
x = 3 x=3 x=3时, 4 ∗ 3 ≡ 0 ( m o d   6 ) 4*3 \equiv 0(mod\ 6) 430(mod 6)
x = 4 x=4 x=4时, 4 ∗ 4 ≡ 4 ( m o d   6 ) 4*4 \equiv 4(mod\ 6) 444(mod 6)
x = 5 x=5 x=5时, 4 ∗ 5 ≡ 2 ( m o d   6 ) 4*5 \equiv 2(mod\ 6) 452(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) axc(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) ax1ax0(modm)——》 m m m整除 a x 1 − a x 0 ax_1-ax_0 ax1ax0.

同时除掉公约数 d d d,则有: m d ∣ a ( x 1 − x 0 ) d \frac{m}{d} | \frac{a(x_1-x_0)}{d} dmda(x1x0)
又证明 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(x1x0).
综上所述,存在整数 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) ac(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 dx,dy,对任意整数 x , y x,y x,y,有 d ∣ a x + m y d|ax+my dax+my】可得, d ∣ c d|c dc.

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=xgcd(a,m)c y=ygcd(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 axgcd(a,m)c+mygcd(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=xgcd(a,m)c ,y=ygcd(a,m)c

例:求解同余方程 18 x ≡ 8 ( m o d   22 ) . 18x\equiv8(mod\ 22). 18x8(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=4u=20,y=4v=16. y y y的值为多少其实不重要)
所以 x ≡ 20 ( m o d   22 ) x\equiv 20(mod\ 22) x20(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) x31(mod 22),不过我们一般倾向于用最小的正整数来表示解,上式可表示为 x ≡ 9 ( m o d   22 ) x\equiv 9(mod\ 22) x9(mod 22)

猜你喜欢

转载自blog.csdn.net/Zerotogether/article/details/107093848