乘法逆元

Bézout 定理

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

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

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

由裴蜀定理我们得到了计算整数 \(x, y\) 的方法,从证明中取名,我们称其为 “扩展欧几里得算法(\(\rm 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 将一组特解 \(x_0, y_0\),并且返回 \(a, b\)\(\gcd d\)

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

\[\begin{aligned} &x = \frac{c}{d} x_0 + k \frac{b}{d}, \\ &y = \frac{c}{d} y_0 - k \frac{a}{d}(k \in \mathbb{Z}) \end{aligned} \]

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

乘法逆元

\(b \perp m (b, m \in \mathbb{Z})\),并且 \(b \mid a\),则存在一个整数 \(x\),使得 \(\frac{a}{b} \equiv ax(\bmod m)\),则称 \(x\)\(b\) 的模 \(m\) 乘法逆元,记为 \(b^{-1}(\bmod m)\)

因为 \(\frac{a}{b} \equiv ab^{-1} \equiv \frac{a}{b} \cdot b \cdot b^{-1}(\bmod m)\),所以 \(b \cdot b^{-1} \equiv 1(\bmod m)\)

如果 \(m \in \mathbb{P}\)(与常用记叙统计,后文我们采用 \(p\) 而不是 \(m\))并且 \(b \lt p\),根据费马小定理,\(b^{p - 1} \equiv 1(\bmod p)\),即 \(b \cdot b^{p - 2} \equiv 1(\bmod p)\),因此 当模数 \(p\) 为指数时,\(b^{p - 2}\)\(b\) 的乘法逆元(这很重要!!!)。

但如果只是保证了 \(b \perp m\),就要通过求解 \(b \cdot x \equiv 1(\bmod m)\) 来求解了。

乘法逆元给予了我们在模意义下操纵除法(分数)的能力,在计数问题中,面对形如 \(\frac{a}{b}\) 的式子,现在我们可以分别对 \(a, b\) 取模 \(p\),再计算 \(a \cdot b^{-1} \bmod p\)。(当然这要求 \(b \perp p\),若 \(p \in \mathbb{P}\),条件等价于 \(b \neq kp (k \in \mathbb{Z})\))。

posted @ 2024-12-18 23:34  revkiru  阅读(2)  评论(0编辑  收藏  举报