乘法逆元

Bézout 定理

对于任意整数 a,b,存在一堆整数 x,y,满足 ax+by=gcd(a,b)

中文常见译名为“裴蜀定理”。

这个东西证明起来感觉没什么意思,大部分都是通过欧几里得算法的特解 x=1,y=0 证回去的,然后大力数学归纳。

由裴蜀定理我们得到了计算整数 x,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, x, y);
    int z = x, x = y, y = z - y * (a / b);
    return d;
}

这段 fuction 将一组特解 x0,y0,并且返回 a,bgcdd

对于更一般的方程 ax+by=c,它有解当且仅当 dc。我们可以先求出 ax+by=d 的一组特解 x0,y0,然后令 x0,y0 同乘 cd,就得到方程 ax+by=c 的一组特解 (cd)x0,(cd)y0。也就是说,对于方程 ax+by=c 的通解可以表示为:

x=cdx0+kbd,y=cdy0kad(kZ)

其中 k 取遍整数集合,d=gcd(a,b)x0,y0ax+by=gcd(a,b) 的一组特解。

乘法逆元

bm(b,mZ),并且 ba,则存在一个整数 x,使得 abax(modm),则称 xb 的模 m 乘法逆元,记为 b1(modm)

因为 abab1abbb1(modm),所以 bb11(modm)

如果 mP(与常用记叙统计,后文我们采用 p 而不是 m)并且 b<p,根据费马小定理,bp11(modp),即 bbp21(modp),因此 当模数 p 为指数时,bp2b 的乘法逆元(这很重要!!!)。

但如果只是保证了 bm,就要通过求解 bx1(modm) 来求解了。

乘法逆元给予了我们在模意义下操纵除法(分数)的能力,在计数问题中,面对形如 ab 的式子,现在我们可以分别对 a,b 取模 p,再计算 ab1modp。(当然这要求 bp,若 pP,条件等价于 bkp(kZ))。

posted @   起汐  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示