第六章:线性方程与最大公因数(2)

现在,我们知道方程

ax+by=gcd(a,b)ax+by=gcd(a,b)

总有整数解x xy y,那么方程有多少个解,解该怎样表述呢 ?
我们由互素a ab b 开始,即让gcd(a,b)=1 gcd(a,b)=1,假设(x1,y1) (x_1,y_1) 是方程ax+by=1 ax+by=1 的一个解。通过x1 x_1 减去b b 的倍数和y1 y_1 加上a a 的相同倍数,可得到其他解。换句话说,对任何整数k k,我们得到新解(x1+kb,y1ka) (x_1+kb,y_1-ka),通过计算

a(x1+kb)+b(y1ka)=ax1+akb+by1bka=ax1+by1=1a(x_1+kb)+b(y_1-ka)=ax_1+akb+by_1-bka=ax_1+by_1=1

仍旧观察gcd(a,b)=1 gcd(a,b)=1 情形,可证明这种方法给出所有解,假设(x1,y1) (x_1,y_1)(x2,y2) (x_2,y_2) 是方程ax+by=1 ax+by=1 的两个解,即

ax1+by1=1ax2+by2=1ax_1+by_1=1 与 ax_2+by_2=1

我们用y1 y_1 乘以第一个方程,用y2 y_2 乘以第二个方程,再相减就得到了b b,整理后得到ax1y2ax2y1=y2y1 ax_1y_2-ax_2y_1=y_2-y_1
类似的,如果用x2 x_2 乘以第一个方程,用x1 x_1 乘以第二个方程,再相减便得到bx2y1bx1y2=x2x1 bx_2y_1-bx_1y_2=x_2-x_1
如果令k=x2y1x1y2 k=x_2y_1-x_1y_2,则得到

x2=x1+kby2=y1kax_2=x_1+kb\\ y_2=y_1-ka

所以,由初识解(x1,y1) (x_1,y_1) 通过去不同的k k 值可得到ax+by=1 ax+by=1 的每个解(x1+kb,y1ka) (x_1+kb,y_1-ka)
如果gcd(a,,b)>1 gcd(a,,b)>1 情况会怎么样 ?
我们令g=gcd(a,b) g=gcd(a,b),由欧几里得算法知方程ax+by=g ax+by=g 至少一个解(x1,y1) (x_1,y_1), 而g g 整除a ab b,故(x1,y1) (x_1,y_1) 是简单方程

agx+bgy=1\frac{a}{g}x+\frac{b}{g}y=1

的解。通过将k k 的值代入

(x1+kbg,y1kag)(x_1+k·\frac{b}{g},y_1-k \frac{a}{g})

### 线性方程定理
a ab b 是非零整数,g=gcd(a,b)g=gcd(a,b), 方程ax+by=g ax+by=g 总有一个整数解(x1,y1) (x_1,y_1),它可由前面的欧几里得算法得到,则方程的每个解可由(x1+kbg,y1kag) (x_1+k·\frac{b}{g},y_1-k \frac{a}{g}) 得到,其中k k 可为任意整数。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Hacking