浅谈拓展欧几里得
浅谈拓展欧几里得
欧几里得,永远的神
裴蜀定理
在类似$ax+by=c$的方程中,$x$,$y$当在$gcd(a,b) | c$时有整数解且有无数整数解。
证明1
有解时 $c$一定是$gcd(a,b)$的倍数
设$gcd(a,b)=p$
$ax=(a_1 \cdot p)x=p(a_1 \cdot x)$
$by=(b_1 \cdot p)y=p(b_1 \cdot y)$
$c=ax+by=p(a_1x+b_1y)$
$\therefore gcd(a,b)|c $
证毕
证明2
当$gcd(a,b) | c$时, $x$,$y$一定有整数解
1
求欧几里得求$gcd(a,b)$时
有 $gcd(a,b) \Rightarrow gcd(b,a \mod b) \Rightarrow \cdots \Rightarrow gcd(p,0)$
当在最终状态$gcd(p,0) \Rightarrow a'=p,b'=0$时,存在$x'=\frac{c}{p}, y'$为任意数即可满足$a'x'+b'y'=c'$
2
在$gcd(a,b) \Rightarrow gcd(b,a \mod b)$时
$ax+by=bx_1+(a \mod b)y_1$
$=bx_1+(a- \lfloor \frac{a}{b} \rfloor \cdot b)y_1$
$=ay_1+b(x_1- \lfloor \frac{a}{b} \rfloor \cdot y_1)$
只需让 $x=y_1,y=x_1- \lfloor \frac{a}{b} \rfloor \cdot y_1$即可
证毕
如何求类似 ax+by=c的方程
如何求方程的特殊解
在1.2读者其实已经可以找到答案
在递归到$gcd(p,0)=p$时 令$x=\frac{c}{p},y=0$可得特殊解
在回溯 让 $x=y_1,y=x_1- \lfloor \frac{a}{b} \rfloor \cdot y_1$即可
程序如下
1 void Eculid(int a,int b,int c,int &x,int &y) 2 { 3 if(b==0){ 4 x=c/a,y=0; 5 return ; 6 } 7 else 8 { 9 int x1,y1; 10 Eculid(b,a%b,c,x1,y1); 11 x=y1; 12 y=x1-a/b*y1; 13 } 14 }
如何求方程的一般解1
以$8x+6y=4$为例
可以求得特殊解$x=2,y=-2$
因为$gcd(8,6)=2$
所以解的一般形式为$x=2+3k,y=-2-4k(k \in \mathbb{Z})$

浙公网安备 33010602011771号