数论-exgcd

年年背,年年忘,必须来记一下了

Exgcd

即为辗转相除法的运用

这是一个常用的求 gcd(a,b) 的东西,然后由于其性质,还可以用来求诸如 ax+by=c 的二元一次不定方程,在gcd(a,b)=1 时就变成了求 ax+by=1amod b 意义下的逆元: ax1(mod b)

性质及其原理:

1. gcd(a,b)c

首先,对于拓展欧几里得,它是用来求诸如 ax+by=c 的二元一次不定方程,如果想让这个方程在整数范围内有解,就必有:gcd(a,b)c :

证明1:

在整数范围内:

gcd(a,b)agcd(a,b)b

所以 gcd(a,b)(ax+by)gcd(a,b)c

2. 辗转相除法的依据

gcd(b,(a  mod  b))=gcd(a,b)

证明2.

我们不妨设 a>b

a 可以表示为 kb+ra  mod  b=r

所以 r=akb

再设 ga,b 的约数,则有 gagb

所以 gr

所以 (a,b)(b,(a  mod  b)) 的约数相等

又由于 r=a  mod  b<a

所以 gcd(b,r)gcd(a,b)

所以 gcd(b,(a  mod  b))=gcd(a,b)

3. 辗转相除法的运用

关于如何运用辗转相除求 ax+by=c  ( gcd(a,b)c ) 和正确性。

证明3:

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

可以转化成 :

ax+by=gcd(a,b)

x=x×cgcd(a,b)    y=y×cgcd(a,b)

那么,现在我们要求 ax+by=gcd(a,b)  \textcircled 1

我们先设 G=gcd(a,b)

然后,如果我们已经找到了一个有一个特解的式子:

bx1+(a  mod  b)y1=G  \textcircled 2

(意思是若已知 x1y1

(这个式子必然存在,原理见2.)

那么,我们就将问题变成了通过 \textcircled 2 来得到 \textcircled 1 的一组特解:

具体如下:

\textcircled 1\textcircled 2 得:

ax+by=bx1+(a  mod  b)y1

又因为:

a  mod  b=aab×b

所以:

ax+by=bx1+(aab×b)y1

ax+by=ay1+b(x1ab×y1)

所以可得 \textcircled 1 的一组特解:

x=y1  ,  y=(x1ab×y1)

然后,既然已知可由 \textcircled 2 的一组特解求 \textcircled 1 那现在就变成了求 \textcircled 2 的一组特解。

你会发现 \textcircled 2 也是类似于:a1x1+b1y1=G 的形式

那么我们就可以递归:

akxk+bkyk=G

bkxk+1+(ak  mod  bk)yk+1=G

然后设: ak+1=bk  ,  bk+1=(ak  mod  bk)

就可以进行下一层了。

到最后一定有某一层 bi=0

此时 ai=G

所以我们就有了一组特解:

{xi=1 yi=0

(此时 yi 的值可以任取)

然后一层层回溯就可以求解原式子的 x0,y0

注意此时求出来的 x0y0ax0+by0=gcd(a,b) 的解, 最后还要乘上 cgcd(a,b) 才是原式子 ax+by=c 的解

x=x0×cgcd(a,b)  ,  y=y0×cgcd(a,b)

4. 求通解

证明4:

既然已经知道了如何求某一组 x,y ,那么我们如何求出所有我们需要的 x,y 呢?

我们设一个数 d ,则有:

a(x1+db)+b(y1da)=c

(请自行拆括号)

为方便下文的理解,我们也可以写成:

a(x1+bd)+b(y1ad)=c

(同理)

因为我们一直都是在整数范围内研究,所以 bd,ad 都为整数。

并且我们希望可以通过这个式子来递推求出所有的解,所以我们希望它们最小。

综合以上两点,就意味着:

da,db ,且 d 最大

所以 d=gcd(a,b)

那么,可以设 dx=bgcd(a,b)  ,  dy=agcd(a,b)

s 为任意整数

则所有的整数解为:

{x=x1+s×dxy=y1+s×dy

题目:

先来一道模板:

1. 模板:P1082同余方程

那么,上代码:

Code:

ll ls;
inline void exgcd(ll a,ll b,ll& x,ll & y)
{
	if(b==0){x=1;y=0;return;}
	exgcd(b,a%b,x,y);
	ls=x;	x=y;
	y=ls-(a/b)*y;
}

2. 升级运用:P5656二元一次不定方程

posted @   YT0104  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示