扩展欧几里得 不定方程 学习笔记

首先考虑一个问题:

求$ax+by=gcd(a,b)$的通解。

在欧几里得算法的最后一步,我们有$b=0$,$a=gcd(a,b)$。

此时令$x=1,y=0$即为一组解。

在回溯的过程中,我们可以得到$xb+y(a%b)=gcd(a,b)$。

我们要将其转化为$x'a+y'b=gcd(a,b)$的形式。

于是根据$a%b=a-b*(a/b)$可得($a/b$为向下取整)

$xb+y(a-b*(a/b))=gcd(a,b)$

展开可得到$xb+ya-by(a/b)=gcd(a,b)$

整理可得到$ya+b(x-y(a/b))=gcd(a,b)$

故$x'=y$ $y'=x-y(a/b)$

由此我们得到一个特解$x,y$,通解即为$x+kb,y-ka$

因为$a(x+kb)+b(y-ka)=ax+by$

然后对于一般的不定方程$ax+by=c$,它有解当且仅当$gcd(a,b)|c$,

因为此时原方程可以化为$a(x/t)+b(y/t)=c/t$,其中$c/t=gcd(a,b)$,即$t=c/gcd(a,b)$

事实上,新方程的解就是原方程的解。

那么我们可以求得一组新方程的解$ax'+by'=gcd(a,b)$

所以$x/t=x',y/t=y'$

即$x=x'*c/gcd(a,b),y=y'*c/gcd(a,b)$

故原方程的通解为$x'+kb/gcd(a,b),y'-ka/gcd(a,b)$

posted @ 2021-07-16 10:22  lei_yu  阅读(36)  评论(0编辑  收藏  举报