首页 / 学科工具 / 初中竞赛 / 整除、同余与不定方程 / 费马小定理:降次的第一把刀
初中数学竞赛 · 整除、同余与不定方程

费马小定理:降次的第一把刀

只要模数是素数,指数就可以按 p−1 取余。这一条把“大指数求余”从找规律变成了套公式。

九~九年级难度 ★★★★15 分钟

定理

设 p 是素数,a 是整数且 p∤a,则

ap−1≡1(modp)

等价形式:对任意整数 a,ap≡a(modp)。第二种形式不要求 p∤a,因为 p∣a 时两边都 ≡0。

它解决什么问题

指数太大算不动。有了它,指数就可以对 p−1 取余,10100 次方瞬间降到几十次方。

为什么成立

用剩余系。取 1,2,…,p−1,它们构成模 p 的简化剩余系。全部乘 a,得到 a,2a,…,(p−1)a,因为 gcd(a,p)=1,这也是一组简化剩余系。

两个集合的乘积同余:

a·2a⋯(p−1)a≡1·2⋯(p−1)(modp)

即 ap−1(p−1)!≡(p−1)!(modp)。(p−1)! 与 p 互素,可以约掉,得 ap−1≡1。

用法:先看模数是不是素数

模数是素数,直接用;模数是合数,用欧拉定理(指数对 φ(m) 取余);模数含有多个素因子,拆成几个同余式分别算,再合并(中国剩余定理)。

例题

例1 直接降次

求 2100 除以 13 的余数。

解:13 是素数,gcd(2,13)=1,故 212≡1(mod13)。

100=12×8+4,所以 2100≡24=16≡3(mod13)。

例2 模数不是素数

求 3100 除以 10 的余数。

解:10 不是素数,用欧拉定理:φ(10)=4,34≡1(mod10)。

100=4×25,故 3100≡1(mod10),个位数字是 1。

例3 证明整除

证明:对任意整数 n,n7−n 能被 7 整除。

解:由费马小定理的第二种形式,n7≡n(mod7),所以 n7−n≡0(mod7)。

推广:对任意素数 p,np−n 都能被 p 整除。这条结论在竞赛里几乎年年出现。

例4 求逆元

求 5 在模 17 下的逆元。

解:516≡1(mod17),故 5−1≡515(mod17)。直接算太麻烦,改用扩展欧几里得或试乘:

5×7=35≡1(mod17),所以逆元是 7。

例5 判定合数

证明 341 是合数(尽管它满足 2341≡2(mod341))。

解:341=11×31,直接看出是合数。

顺便说一句:341 叫“伪素数”,它满足费马小定理的形式却不是素数。所以费马小定理只能用来否定素数(若不满足,一定不是素数),不能用来肯定。这一点在竞赛里经常设陷阱。

三个坑
  1. 模数不是素数还用 p−1:p−1 只对素数模成立,合数要用 φ(m)。
  2. 指数取余后忘了还原:a100≡a100mod(p−1) 只在 ap−1≡1 的前提下成立,指数为 0 时应取 ap−1 而不是 a0。
  3. 用费马小定理证明素数:只能反用——不满足则不是素数;满足不代表是素数(341 是反例)。
练习(先做,再看答案)
  1. 求 32026 除以 7 的余数。
  2. 求 2100 除以 5 的余数。
  3. 证明 n13−n 能被 13 整除。
  4. 求 7 在模 19 下的逆元。
  5. 判断 561 是否为素数,并说明理由。
看答案

1. 36≡1(mod7),2026=6×337+4,32026≡34=81≡4(mod7)。

2. 24≡1(mod5),100=4×25,故余 1。

3. 由费马小定理 n13≡n(mod13),故差被 13 整除。

4. 7×11=77=19×4+1,逆元是 11。

5. 561=3×11×17,是合数(它是最小的卡迈克尔数,对任意与它互素的 a 都满足 a560≡1,所以费马小定理也拦不住它)。

一页速记
  • 素数模:ap−1≡1(gcd(a,p)=1);ap≡a(任意 a)
  • 大指数:先对 p−1 取余
  • 合数模:改用欧拉定理,指数对 φ(m) 取余
  • 只能反用:不满足 ⇒ 不是素数;满足 ≠ 是素数
  • 逆元 a−1≡ap−2(modp)
看完了? 去 整除、同余与不定方程 做配套练习,或回到 竞赛总览 挑下一个专题。想动手刷题、看看这些方法在题目里怎么用,去 奥数挑战。