欧几里得算法证明

欧几里得算法证明:

\[(a,b)=(b,a\bmod b) \]

\(S1\)\(a,b\) 的所有公约数的集合,\(S2\)\(b,a \bmod b\)的所有公约数的集合

如果 \(\frac{a}{b}\) 为正数,\(a \bmod b =a-b \lfloor \frac{a}{b} \rfloor\)

\[\forall x \in S_1,x|a,x|b \]

\[\frac{a\bmod b}{x}=\frac{a}{x}-\frac{b}{x}t \]

\(t =\lfloor \frac{a}{b} \rfloor\)为一个整数,所以\(x|(a \bmod b)\)

\[\forall x \in S_2,x|a,x|(a \bmod b) \]

\[a\bmod b=a-bt \]

\[\frac{a}{x}=\frac{bt+a-bt}{x}=\frac{b}{x}t + \frac{a-bt}{x} \]

\[\therefore x|a \]

\(S_1=S_2\),两个集合相等,最大值肯定相等。

如果 \(\frac{a}{b}\) 为负数,C++中 \(a\bmod b=a-b\lceil \frac{a}{b}\rceil\)

同理,\((a,b)=(b,a\bmod b)\)也成立。


易证,如果 \(b|a\)\(b\) 就是两者的最大公约数(公约数不可能大过 \(b\) )。

下面证明该递归一定会结束。

假设死循环,说明一直有 \(a\bmod b \neq 0\)

\[0<a\bmod b\le b-1 \]

递归gcd(b,a%b)

\[0<b\bmod(a\bmod b)\le a\bmod b-1\le b-2 \]

...

\(0<a\bmod b\le 1\) 的时候,\(a\bmod b=1\),下一层递归时一定有 \(b | a\)(1能整除任何数)。

这与假设矛盾,所以一定会结束递归。


下面证明时间复杂度。

首先\(a\bmod b<\frac{a}{2}\)

\[a\bmod b=a-bt \]

\[t=\frac{a}{b}>0?\lfloor \frac{a}{b} \rfloor : \lceil \frac{a}{b} \rceil \]

\[p=\frac{a}{b}>0 \]

\[t\le p<t+1 \]

假设上式不成立。

\[a-bt\ge \frac{a}{2} \]

\[\frac{a}{2}\ge bt \]

\[\frac{a}{b}\ge 2t \]

\[p\ge 2t \]

\[a\ge b,p=\frac{a}{b}\ge 1,t\ge 1 \]

\[t+t\ge 1+t \]

但是$$p<t+1\le 2t$$

\[p\le 2t \]

矛盾。

a/b<0类似。

如果a<b,gcd(b,a%b)=gcd(b,a),就变成了a>b的情况了(多递归一次)。

接下来a%b一定小于b,所以第二个参数一定是最小的。

然后b就是小的那一个,因为每次是a%b<a/2,最后就到了b=1的时候,用不到logn次就行了。


扩展欧几里得算法

exgcd(a,b,x,y)=exgcd(b,a%b,y,x)

by+x(a-kb)=d=by+xa-kxb=xa+b(y-kb)(k是C++里面向零取整的a/b)。

所以x不变,y减掉a/b*b就行了。

假设我们现在已经求出了一组解(x,y),因为ax+by=t,所以y=(t-ax)/b和x一一对应。

要找出所有的解,就要找出距离x最近的另外一个x0。

设d=x0-x,要让|d|最小。

a(x+d)+by0=t,y0=(t-ax-ad)/b=(t-ax)/b-ad/b。

也就是y0=y-ad/b

要让x0,y0都是整数,d就是整数,ad/b也是整数

设t=gcd(a,b)

a/b*d是整数

把a/b约分,a0/b0*d

这样就去除了a、b公因数的影响。

b0一定是d的约数,d一定是b0的倍数

因为要让|d|最小,取d=正负b0即可

也就是b/t,那么y就是相应减去a/t。

这样就能找出所有解了。


关于裴属定理

存在性:用扩展欧几里得算法可以构造出一组解。

设$ S(a,b) = {t|t=ax+by,x,y\in Z}$

\(p:x \in S(a,b)\)
\(q:(a,b) | x\)

\(p \Rightarrow q\)

\(d = (a,b)\)\(d | a, d | b, d|(ax+by)=t\)

所以 \(\neg q \Rightarrow \neg p\)

也就是如果x不是d的倍数,它就不是S的元素,也就是说任何一个ax+by都不等于x,也就是说x无解。

line

posted @ 2023-09-08 20:19  Zlc晨鑫  阅读(84)  评论(0)    收藏  举报