裴蜀定理
若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)</
裴蜀定理与Exgcd算法

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





