浅谈拓展欧几里得

                                        浅谈拓展欧几里得

                                                                                                           欧几里得,永远的神

裴蜀定理

在类似$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})$

posted @ 2020-03-07 20:29  juruo_ddb  阅读(36)  评论(0)    收藏  举报