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

定理

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

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

重要推论

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

证明

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

s s s a x + b y ax+by ax+by的最小正值 ⋯ ⋯ ( 1 ) \cdots\cdots(1) (1)

a   ÷   s = q ⋯ r a\ \div\ s=q\cdots r a ÷ s=qr,则 q = ⌊ a s ⌋ q=\lfloor \frac{a}{s}\rfloor q=sa

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

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

∵ r = a   m o d   s \because r=a\ mod\ s r=a mod s,故 0 ≤ r < s 0\leq r < s 0r<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=q a÷s=q

∴ s ∣ a \therefore s\mid a sa

同理可证 s ∣ b s|b sb

∵ { s ∣ a s ∣ b d = g c d ( 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 s ds

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

∴ d ∣ s \therefore d\mid s ds

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

∴ d ≤ s \therefore d\leq s ds

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

∴ d = s \therefore d=s d=s

∴ a x + b y = d \therefore ax+by=d ax+by=d

证毕。

求不定方程的解

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

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

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

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

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

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

b x ′ + r y ′ = d bx'+ry'=d bx+ry=d

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

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

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

∵ \because
{ a y ′ + b ( x ′ − ⌊ a b ⌋ y ′ ) = d a x + b y = 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 ′ − ⌊ a b ⌋ 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;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值