MathLabs

算术与数论

费马小定理与欧拉定理

描述幂在模素数或一般整数下如何变化的经典定理。

直观拥有素数刻度的时钟

在一个1313小时的钟面上任选一个不恰好在1212位置的时针位置aa(即gcd⁡(a,13)=1\gcd(a,13)=1),然后不断把它自乘:a,a2,a3,…(mod13)a, a^2, a^3, \dots \pmod{13}。恰好经过1212次乘法后会出现一件了不起的事——无论起始位置选在哪里,总会回到11。这正是费马小定理:对素数pp,任何非零剩余的p−1p-1次幂都会回到11。欧拉定理把这一结果从素数钟面推广到任意大小nn的钟面,把p−1p-1替换为φ(n)\varphi(n),即不超过nn且与之互素的数的个数。这两个定理合在一起正是RSA加密与快速素性检验背后的数学引擎。

展示模素数下重复乘法所形成循环的网络图。
当模数为素数 m=pm = p 且 aa 与 pp 互素时,乘法映射 x↦ax mod px \mapsto ax \bmod p 是非零剩余类上的双射——这是证明 ap−1≡1(modp)a^{p-1} \equiv 1 \pmod p 的关键一步。

中学定理陈述与欧拉函数

定义: 欧拉函数φ(n)\varphi(n)

对正整数nn,定义φ(n)=#{ 1≤k≤n:gcd⁡(k,n)=1 }\varphi(n) = \#\{\,1\le k\le n : \gcd(k,n)=1\,\}:即从11到nn中与nn互素的整数个数。对素数pp,1,…,p−11,\dots,p-1中每一个都与pp互素,故φ(p)=p−1\varphi(p)=p-1。一般地,φ\varphi可由nn的素因数分解通过φ(n)=n∏p∣n(1−1p)\varphi(n) = n\prod_{p\mid n}\left(1-\frac{1}{p}\right)计算,其中乘积取遍整除nn的相异素数。

ap−1≡1(modp)(p prime, gcd⁡(a,p)=1)a^{p-1} \equiv 1 \pmod{p} \qquad (p \text{ prime},\ \gcd(a,p)=1)

这就是费马小定理。欧拉定理把素数模换成任意模nn,把p−1p-1换成φ(n)\varphi(n):只要gcd⁡(a,n)=1\gcd(a,n)=1,就有aφ(n)≡1(modn)a^{\varphi(n)} \equiv 1 \pmod{n}。取n=pn=p为素数时,由于φ(p)=p−1\varphi(p)=p-1,恰好还原出费马的陈述。

aφ(n)≡1(modn)(gcd⁡(a,n)=1)a^{\varphi(n)} \equiv 1 \pmod{n} \qquad (\gcd(a,n)=1)
费马定理与欧拉定理对比
模陈述相关群
素数ppap−1≡1(modp)a^{p-1}\equiv1\pmod p(Z/pZ)∗(\mathbb{Z}/p\mathbb{Z})^{*},阶为p−1p-1
任意nnaφ(n)≡1(modn)a^{\varphi(n)}\equiv1\pmod n(Z/nZ)∗(\mathbb{Z}/n\mathbb{Z})^{*},阶为φ(n)\varphi(n)

大学定理

若pp为素数且gcd⁡(a,p)=1\gcd(a,p)=1,则ap−1≡1(modp)a^{p-1} \equiv 1 \pmod{p}。等价地,对任意整数aa都有ap≡a(modp)a^{p} \equiv a \pmod{p}。

为什么成立?

模素数pp的非零剩余在乘法下构成一个封闭系统:用固定的aa乘以其中每一个,只是把它们相互打乱重排。把这种打乱重复p−1p-1次,必然使每个元素都回到自己原来的位置,这正是ap−1≡1(modp)a^{p-1}\equiv1\pmod p这一陈述。

证明

考虑模pp的非零剩余集合S={1,2,…,p−1}S=\{1,2,\dots,p-1\},以及把SS中每个元素送到某个剩余的映射x↦ax mod px \mapsto ax \bmod p。

该映射在SS上是单射的:若对x,y∈Sx,y\in S有ax≡ay(modp)ax\equiv ay\pmod p,由于gcd⁡(a,p)=1\gcd(a,p)=1,消去律(前一主题已证明)给出x≡y(modp)x\equiv y\pmod p,从而x=yx=y,因为二者都属于{1,…,p−1}\{1,\dots,p-1\}。同样对x∈Sx\in S, axax 也不会 ≡0(modp)\equiv 0\pmod p,因为pp是素数且不整除aa也不整除xx。所以该映射确实又落回SS中。

有限集合SS到自身的单射映射自动是双射。因此{a⋅1,a⋅2,…,a⋅(p−1)}(modp)\{a\cdot1,a\cdot2,\dots,a\cdot(p-1)\} \pmod p不过是{1,2,…,p−1}\{1,2,\dots,p-1\}按另一种顺序排列而已。

把两个集合的全部p−1p-1个元素分别相乘。一边得到(a⋅1)(a⋅2)⋯(a⋅(p−1))=ap−1 (p−1)!(a\cdot1)(a\cdot2)\cdots(a\cdot(p-1)) = a^{p-1}\,(p-1)!;另一边由于只是同样的数重新排列,恰好得到(p−1)!(p-1)!。于是ap−1(p−1)!≡(p−1)!(modp)a^{p-1}(p-1)! \equiv (p-1)! \pmod p。

因为pp是素数,1,2,…,p−11,2,\dots,p-1中没有一个能被pp整除,故gcd⁡((p−1)!,p)=1\gcd((p-1)!,p)=1。再次应用消去律从两边约去公因子(p−1)!(p-1)!,得到ap−1≡1(modp)a^{p-1}\equiv1\pmod p。■\blacksquare

(群论重述:由于pp是素数,非零剩余在乘法下构成一个阶为p−1p-1的群,而拉格朗日定理指出任何元素的阶——这里指使ak≡1a^k\equiv1成立的最小kk——必须整除群的阶p−1p-1;因此自动有ap−1≡1(modp)a^{p-1}\equiv1\pmod p。)

定理: 欧拉定理

若gcd⁡(a,n)=1\gcd(a,n)=1,则aφ(n)≡1(modn)a^{\varphi(n)} \equiv 1 \pmod{n},其中φ\varphi为欧拉函数。

为什么成立?

这正是费马论证在一般模nn下的推广:我们不再使用全体非零剩余(仅当nn为素数时它们才在乘法下封闭),而是限制到真正与nn互素的剩余——即拥有逆元的那些——同样的重排论证适用于这个更小、大小为φ(n)\varphi(n)的封闭集合。

证明

设R={r1,…,rφ(n)}R=\{r_1,\dots,r_{\varphi(n)}\}为模nn的一个简化剩余系:每个与nn互素的剩余类的代表元。

乘以aa会置换RR:对每个rir_i,由于gcd⁡(a,n)=1\gcd(a,n)=1且gcd⁡(ri,n)=1\gcd(r_i,n)=1(一个乘积与nn互素当且仅当两个因子都与之互素),故gcd⁡(ari,n)=1\gcd(ar_i,n)=1,于是ari mod nar_i \bmod n仍属于互素剩余类;又因gcd⁡(a,n)=1\gcd(a,n)=1,由消去律,映射ri↦ari mod nr_i\mapsto ar_i \bmod n是单射。

有限集合RR到自身(在剩余意义下)的单射映射即为双射,故{ar1,…,arφ(n)}(modn)\{ar_1,\dots,ar_{\varphi(n)}\} \pmod n不过是{r1,…,rφ(n)}\{r_1,\dots,r_{\varphi(n)}\}的重新排列。

把每个集合的全部φ(n)\varphi(n)个元素相乘:aφ(n) (r1r2⋯rφ(n))≡r1r2⋯rφ(n)(modn)a^{\varphi(n)}\, (r_1 r_2\cdots r_{\varphi(n)}) \equiv r_1 r_2 \cdots r_{\varphi(n)} \pmod n。由于每个rir_i都与nn互素,它们的乘积R=∏riR=\prod r_i也与之互素,即gcd⁡(R,n)=1\gcd(R,n)=1。

从两边约去RR(因gcd⁡(R,n)=1\gcd(R,n)=1而有效)得到aφ(n)≡1(modn)a^{\varphi(n)}\equiv1\pmod n。■\blacksquare

这又是拉格朗日定理的另一种表现形式:与nn互素的剩余在乘法下构成一个阶为φ(n)\varphi(n)的群(单位群(Z/nZ)∗(\mathbb{Z}/n\mathbb{Z})^{*}),任何元素的阶都整除φ(n)\varphi(n)。

进阶实际应用与典型例题

欧拉定理是RSA公钥密码学的数学核心——解密的正确性依赖于取φ(n)\varphi(n)次幂后回到11。费马小定理给出一种快速的概率素性检验(尝试底数aa并检验ap−1≡1a^{p-1}\equiv1),并且可以在不使用扩展欧几里得算法的情况下,把模逆元计算为ap−2 mod pa^{p-2}\bmod p。这两个定理也是编码理论与伪随机数生成中普遍使用的快速模幂运算的基础。

例题: RSA解密为何有效

取p=5,q=11p=5,q=11,则n=pq=55n=pq=55,φ(n)=(p−1)(q−1)=40\varphi(n)=(p-1)(q-1)=40。选取公钥指数e=3e=3(因gcd⁡(3,40)=1\gcd(3,40)=1)和私钥指数d=27d=27(因3×27=81=2×40+13\times27=81=2\times40+1,故ed≡1(mod40)ed\equiv1\pmod{40})。把m=2m=2加密为c=me mod nc=m^e\bmod n,然后解密cc并检验能否恢复m=2m=2。

解答

加密:c=23 mod 55=8c = 2^3 \bmod 55 = 8。

解密是把密文取私钥指数次幂:m′=cd mod n=827 mod 55m' = c^d \bmod n = 8^{27}\bmod 55。因为存在整数kk使ed=1+kφ(n)ed = 1+k\varphi(n)(此处81=1+2×4081=1+2\times40),所以m′≡med=m1+kφ(n)=m⋅(mφ(n))k(modn)m' \equiv m^{ed} = m^{1+k\varphi(n)} = m\cdot(m^{\varphi(n)})^k \pmod n。

由于gcd⁡(m,n)=gcd⁡(2,55)=1\gcd(m,n)=\gcd(2,55)=1,欧拉定理给出mφ(n)≡1(modn)m^{\varphi(n)}\equiv1\pmod n,故(mφ(n))k≡1k=1(modn)(m^{\varphi(n)})^k\equiv1^k=1\pmod n,因此m′≡m⋅1=m(modn)m'\equiv m\cdot1 = m \pmod n。

从数值上看:827 mod 558^{27}\bmod55可用重复平方法计算(82=64≡98^2=64\equiv9,84≡81≡268^4\equiv81\equiv26,88≡262=676≡676−660=168^8\equiv26^2=676\equiv676-660=16,816≡162=256≡256−220=368^{16}\equiv16^2=256\equiv256-220=36;再827=816⋅88⋅82⋅81≡36×16×9×88^{27}=8^{16}\cdot8^8\cdot8^2\cdot8^1\equiv36\times16\times9\times8)。逐步对模5555化简恰好得到22,证实解密还原了原始消息m=2m=2——正如欧拉定理对任意消息和任意一对素数p,qp,q所保证的那样,并不仅限于这个例子。

例题: 费马伪素数:检验"撒谎"的时候

证明341=11×31341=11\times31(是合数)仍满足2340≡1(mod341)2^{340}\equiv1\pmod{341}——这恰好是若341341为素数时费马小定理所预测的结论。

解答

分别对每个素因数取模来考察。模1111:因为1111是素数且gcd⁡(2,11)=1\gcd(2,11)=1,由费马定理得210≡1(mod11)2^{10}\equiv1\pmod{11};因为340=10×34340=10\times34,所以2340=(210)34≡134=1(mod11)2^{340}=(2^{10})^{34}\equiv1^{34}=1\pmod{11}。

模3131:这里25=32≡1(mod31)2^5=32\equiv1\pmod{31},所以22在模3131下的阶为55(φ(31)=30\varphi(31)=30的一个因数,与费马/欧拉定理一致)。因为340=5×68340=5\times68是55的倍数,所以2340=(25)68≡168=1(mod31)2^{340}=(2^5)^{68}\equiv1^{68}=1\pmod{31}。

因此2340≡12^{340}\equiv1在模1111与模3131下都成立。由中国剩余定理(下一主题)可知,对两个互素的数1111与3131都≡1\equiv1,就迫使2340≡1(mod341)2^{340}\equiv1\pmod{341}成立,尽管341341并非素数。

若合数nn对某个与之互素的底数aa满足an−1≡1(modn)a^{n-1}\equiv1\pmod n,就称其为**以aa为底的费马伪素数**;341341是以22为底的最小伪素数。这正是费马检验只是概率性启发式方法、而非素性证明的原因——这一陷阱将在下文进一步探讨。

研究研究前沿中的费马与欧拉:素性、伪素数与后量子密码学

根据费马小定理,若p=13p=13且gcd⁡(a,13)=1\gcd(a,13)=1,则a12(mod13)a^{12}\pmod{13}等于多少?

计算φ(20)\varphi(20)。

在RSA中,n=55n=55,φ(n)=40\varphi(n)=40,公钥指数e=3e=3,则私钥指数dd必须满足:

341=11×31341=11\times31虽为合数却满足2340≡1(mod341)2^{340}\equiv1\pmod{341}。这种现象叫什么?

参考文献

  1. Ronald L. Rivest, Adi Shamir, Leonard M. Adleman (1978). A Method for Obtaining Digital Signatures and Public-Key Cryptosystems · DOI:10.1145/359340.359342
  2. W. R. Alford, Andrew Granville, Carl Pomerance (1994). There are Infinitely Many Carmichael Numbers · DOI:10.2307/2118576