探索模乘双射置换性质,直观证明与应用逆元计算
费马小定理 (Fermat's Little Theorem) 是数论中的一个重要定理,它不仅是寻找模逆元的强大武器,也是许多素性测试算法的基石。
若 $p$ 为质数,且整数 $a$ 不是 $p$ 的倍数(即 $\gcd(a, p) = 1$),则有:
其等价形式为:对于任意整数 $a$,均有 $a^p \equiv a \pmod p$。
考虑序列 $S = \{1, 2, \ldots, p-1\}$。我们将每个元素乘上底数 $a$ 后模 $p$,得到新集合:
核心定理:$S'$ 也是集 $\{1, 2, \ldots, p-1\}$ 模 $p$ 下的一个置换(即一一映射且互不重复)。
因此,将两个集合的元素分别累乘所得的积模 $p$ 依然相等:
由于 $\gcd((p-1)!, p) = 1$,两边同时消去 $(p-1)!$,即证出:$a^{p-1} \equiv 1 \pmod p$。
// 快速幂算法 O(log p)
long long power(long long base, long long exp, long long mod) {
long long res = 1;
base %= mod;
while (exp > 0) {
if (exp % 2 == 1) res = (res * base) % mod;
base = (base * base) % mod;
exp /= 2;
}
return res;
}
// 利用费马小定理求逆元:a^(p-2) mod p
long long getInverse(long long a, long long p) {
return power(a, p - 2, p);
}