裴蜀定理

裴蜀定理就是方程:

\[ax+by = gcd(a,b) \]

其中 \(a,b\in N\), 一定有整数解

那为啥捏?
我们考虑\(gcd(a,b)\)是咋来的,根据辗转相除法,我们有\(gcd(a, b) = gcd(b, a\%b)\),这个是个递归过程,\(a\%b==0\) 时跳出递归。
这时我们令\(x=1, y = 0\),显然有

\[a*1+0*0 = gcd(a,0) \]

对于某次递归过程我们设

\[a_nx_n+b_ny_n = gcd(a_n,b_n) \]

他的前一项

\[a_{n-1}x_{n-1}+b_{n-1}y_{n-1} = gcd(a_{n-1},b_{n-1}) \]

我们知道

\[a_n = b_{n-1} \]

\[b_n = a_{n-1}\%b_{n-1} = a_{n-1} -\left\lfloor \frac{a_{n-1}}{b_{n-1}} \right\rfloor b_{n-1} \]

\[gcd(a_n,b_n) = gcd(a_{n-1}, b_{n-1}) \]

带入到\(a_nx_n+b_ny_n = gcd(a_n,b_n)\)

\[a_{n-1}y_n + b_{n-1}(x_n - \left\lfloor \frac{a_{n-1}}{b_{n-1}} \right\rfloor y_n) = gcd(a_{n-1}, b_{n-1}) = gcd(a, 0) \]

也就是说我们一定可以从\(a*1+0*0 = gcd(a,0)\)逆推\(a_0x + b_0y = gcd(a_0, b_0)\)
根据以上分析过程,我们有代码

点击查看代码
long long exgcd(long long a, long long b, long long &x, long long &y)
{
    if(b==0)
    {
        x = 1, y = 0;
        return a;
    }
    long long d = exgcd(b, a % b, x, y);
    long long k = x;
    x = y;
    y = k - a / b * y;
    return d;
}

这个裴蜀定理可以求逆元

求逆元其实是在解方程

\[ax\equiv 1 \pmod p \]

这个东西也就是

\[ax-kp = 1 \]

这也启发我们只有当\(gcd(a,p) = 1\) 也就是说a与b互质时才能求模逆元

裴蜀定理的推广

对n个\(a_1, a_2...a_n\)正整数有,方程

\[a_1x_1 + a_2x_2 +...+a_nx_n = gcd(a_1, a_2 ..., a_n) \]

一定有正整数解

方程\(ax + by = c\) 有整数解当且仅当\(gcd(a,b)|c\)

\(gcd(a,b)\)\(f(x, y) = ax+by\) \(x, y\in N\) 的最小正值

posted @ 2025-07-30 15:00  东东哥本人  阅读(42)  评论(0)    收藏  举报