Exgcd(拓展欧几里得算法)的初步理解

裴蜀定理与Exgcd算法
本文介绍了裴蜀定理及其应用Exgcd算法解决一次不定方程的方法,包括求特解、通解及最小解的过程,并通过实例展示了解题步骤。

裴蜀定理

若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。它的一个重要推论是:a,b互质的充分必要条件是存在整数x,y使ax+by=1.

Exgcd

针对于一次不定方程ax+by=c进行求解,利用以上的裴蜀定理可以进行求解,当然要满足 gcd(a,b)|c 这个前置情况这个时候实际上就是对于

b*x+(a%b)*y=d(辗转相除法求得)

a%b=a-(a/b)*b

进行带入即可得到:

a*y-b*(x-(a/b)*y)=d

和原式ax+by=d对比可以知道辗转相除的过程中:

x=y,y=x-(a/b)*y

所以我们可以得到exgcd的过程为:

int exgcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x=1,y=0;
        return a;
    }
    int d=exgcd(b,a%b,y,x);
    y-=(a/b*x);
    return d;
}

解决了exgcd的过程,我们就要看它的作用,解一次不定方程ax+by=c.此时求出来的x,y还不是该方程的解,此时还是ax+by=gcd(a,b)的解(不满足gcd(a,b)|c则无解).我们将x和y均除以gcd(a,b)在乘以一个c就是一组方程的特解.那么如何求通解呢?

取一组x,y和刚刚求出来的特解x0,y0:

ax+by=ax0+by0

a(x-x0)=b(y0-y)</

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值