2 条题解

  • 2
    @ 2026-8-25 16:29:56

    裴蜀定理,又称贝祖定理(Bézout's lemma)。是一个关于最大公约数的定理。

    内容

    a,ba,b 是不全为 00 的整数,对任意整数 x,yx,y,满足 gcd(a,b)ax+by\gcd (a,b)∣ax+by,且存在整数 x,yx,y,使得 ax+by=gcd(a,b)ax+by= \gcd (a,b)

    证明

    对于前半句,因为 gcd(a,b)a\gcd (a,b) | agcd(a,b)b\gcd (a,b) | b,所以 gcd(a,b)ax\gcd (a,b) | axgcd(a,b)by\gcd (a,b) | by,故 gcd(a,b)(ax+by)\gcd (a,b)∣(ax+by)

    对于后半句,考虑由所有 ax+by(x,yZ)ax+by(x,y \in \mathbb{Z}) 构成的整数集合 SS,因为 a,ba,b 不全为零,所以 SS 中显然包含正整数。所以 SS 的正整数部分(以下记为 SS')是正整数集的一个子集。由良序原理可得 SS' 中必定存在最小值。将最小值记作

    d=ax0+by0,x0,y0Z.d = ax_0 + by_0, \quad x_0, y_0 \in \mathbb{Z}.

    aa 做带余除法:a=qd+ra=qd+r,其中 0r<d0\le r < d,将这个形式转换一下,得

    $$r=a-qd=a-q(ax_0+by_0)=a-qax_0-qby_0=a(1-qx_0)+bqy_0$$

    因为 q,x0,y0Zq,x_0,y_0\in \mathbb{Z},所以 rSr\in S

    我们发现,如果 r>0r>0,那么 rSr\in S',此时因为 r<dr<d,所以 rr 才是 SS' 中最小的正整数,这与我们原先的假设相悖。所以 r0r\le 0

    又因为 r0r\ge 0,所以 r=0r=0,即 dad | a。 同理可以证明 dbd|b,即 ddaabb 的公因数。

    此时因为 dSd\in S,所以 gcd(a,b)d\gcd (a,b)|d,即 d=k×gcd(a,b)(k1)d=k\times \gcd (a,b)(k\ge 1),如果 k>1k>1,那么我们找到了一个比 gcd(a,b)\gcd (a,b) 更大的 aabb 的公因数,与 gcd(a,b)\gcd (a,b) 的定义矛盾。所以 k=1k=1,即 d=gcd(a,b)d= \gcd (a,b)。所以存在 xxyy 使得 ax+by=gcd(a,b)ax+by= \gcd (a,b)。后半句得证。

    注:此定理可以扩展成多个整数的情况。

    模版题

    应用

    那么它有什么用呢?

    1. 不定方程

    裴蜀定理可以用于判定不定方程是否有解。

    即对于关于 x,yx,y 的方程 ax+by=cax+by=c 有解等价于 gcd(a,b)c\gcd (a,b)|c

    例:二元一次不定方程

    线性同余方程

    • 0
      @ 2025-10-8 16:49:24

      G16 裴蜀定理

      #include<iostream>
      #include<cmath>
      using namespace std;
      
      int n,a,s;
      
      int gcd(int a, int b){
        return b==0?a:gcd(b,a%b);
      }
      int main(){
        cin >> n;
        for(int i=1;i<=n;i++){
          cin >> a;
          s = gcd(s,abs(a));
        }
        cout << s;
        return 0;
      }
      
      • 1

      G16 裴蜀定理[P4549] 【模板】裴蜀定理

      信息

      ID
      325
      时间
      1000ms
      内存
      128MiB
      难度
      8
      标签
      递交数
      184
      已通过
      22
      上传者