费马小定理

· · 算法·理论

引言

费马小定理是数论中最基础的结论之一。它描述了整数在模素数下的幂次规律,形式简单但用途广泛,是素性检测、密码学和代数结构的常用工具。本文给出该定理的标准陈述、两种证明路径以及几个典型应用场景。

定理内容

p 为素数,a 为整数且 p \nmid a,则

a^{p-1} \equiv 1 \pmod{p}

等价表述为:对任意整数 a

a^p \equiv a \pmod{p}

后者不要求 ap 互素,因为若 p \mid a 则两边均为 0 \bmod p,等式自然成立。

证明

归纳法证明

固定素数 p,对 a 做归纳。

$$(k+1)^p = \sum_{i=0}^{p} \binom{p}{i}k^i$$ 当 $1 \le i \le p-1$ 时,$\binom{p}{i} = \frac{p!}{i!(p-i)!}$ 的分子含因子 $p$,分母不含,故该项被 $p$ 整除。因此模 $p$ 下只保留首尾两项: $$(k+1)^p \equiv k^p + 1 \pmod{p}$$ 代入归纳假设 $k^p \equiv k \pmod{p}$,得到 $(k+1)^p \equiv k+1 \pmod{p}$。归纳完成。## 应用 ### 简化模幂计算 计算 $3^{201} \bmod 11$。 由费马小定理,$3^{10} \equiv 1 \pmod{11}$。将指数拆分: $$3^{201} = 3^{200} \cdot 3 = (3^{10})^{20} \cdot 3 \equiv 1^{20} \cdot 3 = 3 \pmod{11}$$ ### 除法求逆 在模 $p$ 运算中,若需要计算 $b^{-1} \bmod p$(即找一个 $x$ 使得 $bx \equiv 1 \pmod{p}$),可直接取 $x = b^{p-2} \bmod p$。这是因为 $b \cdot b^{p-2} = b^{p-1} \equiv 1 \pmod{p}$。 在代码实现中,计算 $b^{p-2} \bmod p$ 时,由于指数 $p-2$ 可能非常大(例如 $p=10^9+7$),直接循环乘法是不可行的。此时需要使用**快速幂**算法,通过二进制拆分将指数降为 $O(\log p)$ 级别。 快速幂的核心思想是:将指数 $e$ 表示为二进制形式,从低位到高位遍历,若当前位为 $1$,则将底数的对应幂次乘入答案;同时每一步将底数平方,以准备下一位。 ## 推广 欧拉定理将费马小定理从素数模推广到任意正整数模:若 $\gcd(a,n)=1$,则 $$a^{\varphi(n)} \equiv 1 \pmod{n}$$ 其中 $\varphi(n)$ 是欧拉函数。当 $n=p$ 为素数时 $\varphi(p)=p-1$,退化为费马小定理。 另一个相关结论是威尔逊定理:$(p-1)! \equiv -1 \pmod{p}$ 当且仅当 $p$ 为素数。它与费马小定理共享了"模素数下的阶乘性质"这一主题,但计算复杂度更高,不适合做素性检测。 ## 小结 费马小定理的核心价值在于把"大指数模运算"降维到"指数取模 $p-1$"。这个想法贯穿了整个公钥密码体系的设计逻辑。掌握它的证明不只是记住一个公式,更重要的是理解模素数剩余系的乘法结构——这是后续学习有限域和椭圆曲线的基础。