裴蜀定理、拓展欧几里得及其证明

定理

裴蜀定理(贝祖定理)是一个关于最大公约数的定理。

裴蜀定理说明了对任何整数a,b和它们的最大公约数d,关于未知数x和y的线性不定方程:若a,b是整数,且gcd(a,b)=dgcd(a,b)=dgcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别的,一定存在整数x,y使ax+by=d成立。

重要推论

a、b互质的充分必要条件是存在整数x,y使ax+by=1ax+by=1ax+by=1

证明

d=gcd(a,b)d=gcd(a,b)d=gcd(a,b),则d∣a,d∣bd\mid a,d\mid bda,db。由整除性质可得,∀x,y∈N\forall x,y\in \mathbb{N}x,yN,有d∣(ax+by)d\mid(ax+by)d(ax+by)

sssax+byax+byax+by的最小正值⋯⋯(1)\cdots\cdots(1)(1)

a ÷ s=q⋯ra\ \div\ s=q\cdots ra ÷ s=qr,则q=⌊as⌋q=\lfloor \frac{a}{s}\rfloorq=sa

r=a−q⋅s=a−q⋅(ax+by)=a−a⋅qx−b⋅qyr=a-q\cdot s=a-q\cdot(ax+by)=a-a\cdot qx-b\cdot qyr=aqs=aq(ax+by)=aaqxbqy

r=a(1−qx)+b(−qy)r=a(1-qx)+b(-qy)r=a(1qx)+b(qy),故r也为a,b的线性组合。⋯⋯(2)\cdots\cdots(2)(2)

∵r=a mod s\because r=a\ mod\ sr=a mod s,故0≤r<s0\leq r < s0r<s⋯⋯(3)\cdots\cdots(3)(3)

∴(1)(2)(3)⇒r=0\therefore (1)(2)(3) \Rightarrow r=0(1)(2)(3)r=0

∴a÷s=q\therefore a\div s=qa÷s=q

∴s∣a\therefore s\mid asa

同理可证s∣bs|bsb

∵{s∣as∣bd=gcd(a,b) \because \left\{\begin{aligned} s|a\\ s|b\\ d=gcd(a,b) \end{aligned}\right. sasbd=gcd(a,b)

∴d≥s\therefore d\ge sds

∵d∣a,d∣b\because d\mid a,d\mid bda,db,且s是a与b的一个线性组合

∴d∣s\therefore d\mid sds

∵d∣s,s>0\because d\mid s,s > 0ds,s>0

∴d≤s\therefore d\leq sds

∵d≥s,d≤s\because d\ge s,d\leq sds,ds

∴d=s\therefore d=sd=s

∴ax+by=d\therefore ax+by=dax+by=d

证毕。

求不定方程的解

d=gcd(a,b)d=gcd(a,b)d=gcd(a,b)

根据裴蜀定理可得到等式(贝祖等式):ax+by=dax+by=dax+by=d

a÷b=⌊ab⌋⋯ra\div b=\lfloor\frac{a}{b}\rfloor\cdots ra÷b=bar ,故r=a−⌊ab⌋⋅br=a-\lfloor\frac{a}{b}\rfloor\cdot br=abab

根据欧几里得算法,gcd(a,b)=gcd(b,a%b)=gcd(b,r)=dgcd(a,b)=gcd(b,a\%b)=gcd(b,r)=dgcd(a,b)=gcd(b,a%b)=gcd(b,r)=d

b=0b=0b=0,可得到一组特殊解:x=1,y=0x=1,y=0x=1,y=0

b≠0b\neq 0b=0,根据裴蜀定理:

bx′+ry′=dbx'+ry'=dbx+ry=d

=bx′+(a−⌊ab⌋⋅b)y′=d=bx'+(a-\lfloor\frac{a}{b}\rfloor\cdot b)y'=d=bx+(abab)y=d

=bx′+ay′−b⋅⌊ab⌋y′=d=bx'+ay'-b\cdot\lfloor\frac{a}{b}\rfloor y'=d=bx+aybbay=d

=ay′+b(x′−⌊ab⌋y′)=d=ay'+b(x'-\lfloor\frac{a}{b}\rfloor y')=d=ay+b(xbay)=d

∵\because
{ay′+b(x′−⌊ab⌋y′)=dax+by=d \left\{\begin{aligned} ay'+b(x'-\lfloor\frac{a}{b}\rfloor y')=d\\ ax+by=d \end{aligned}\right. ay+b(xbay)=dax+by=d
∴\therefore
{x=y′y=x′−⌊ab⌋y′ \left\{\begin{aligned} x&=y' \\ y&=x'-\lfloor\frac{a}{b}\rfloor y' \end{aligned}\right. xy=y=xbay

即可发现x,y更新规律。

扩展欧几里得算法代码实现

int exgcd(int a,int b,int &x,int &y){
    if(b==0){
        x=1,y=0;
        return a;
    }
    int d=exgcd(b,a%b,x,y);
    int z=x;x=y;y=z-y*(a/b);
    return d;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值