算术与数论
费马小定理与欧拉定理
描述幂在模素数或一般整数下如何变化的经典定理。
直观拥有素数刻度的时钟
在一个13小时的钟面上任选一个不恰好在12位置的时针位置a(即gcd(a,13)=1),然后不断把它自乘:a,a2,a3,…(mod13)。恰好经过12次乘法后会出现一件了不起的事——无论起始位置选在哪里,总会回到1。这正是费马小定理:对素数p,任何非零剩余的p−1次幂都会回到1。欧拉定理把这一结果从素数钟面推广到任意大小n的钟面,把p−1替换为φ(n),即不超过n且与之互素的数的个数。这两个定理合在一起正是RSA加密与快速素性检验背后的数学引擎。
当模数为素数 m=p 且 a 与 p 互素时,乘法映射 x↦axmodp 是非零剩余类上的双射——这是证明 ap−1≡1(modp) 的关键一步。中学定理陈述与欧拉函数
定义: 欧拉函数φ(n)
对正整数n,定义φ(n)=#{1≤k≤n:gcd(k,n)=1}:即从1到n中与n互素的整数个数。对素数p,1,…,p−1中每一个都与p互素,故φ(p)=p−1。一般地,φ可由n的素因数分解通过φ(n)=n∏p∣n(1−p1)计算,其中乘积取遍整除n的相异素数。
ap−1≡1(modp)(p prime, gcd(a,p)=1) 这就是费马小定理。欧拉定理把素数模换成任意模n,把p−1换成φ(n):只要gcd(a,n)=1,就有aφ(n)≡1(modn)。取n=p为素数时,由于φ(p)=p−1,恰好还原出费马的陈述。
aφ(n)≡1(modn)(gcd(a,n)=1) 费马定理与欧拉定理对比| 模 | 陈述 | 相关群 |
|---|
| 素数p | ap−1≡1(modp) | (Z/pZ)∗,阶为p−1 |
| 任意n | aφ(n)≡1(modn) | (Z/nZ)∗,阶为φ(n) |
大学定理
若p为素数且gcd(a,p)=1,则ap−1≡1(modp)。等价地,对任意整数a都有ap≡a(modp)。
为什么成立?
模素数p的非零剩余在乘法下构成一个封闭系统:用固定的a乘以其中每一个,只是把它们相互打乱重排。把这种打乱重复p−1次,必然使每个元素都回到自己原来的位置,这正是ap−1≡1(modp)这一陈述。
证明
考虑模p的非零剩余集合S={1,2,…,p−1},以及把S中每个元素送到某个剩余的映射x↦axmodp。
该映射在S上是单射的:若对x,y∈S有ax≡ay(modp),由于gcd(a,p)=1,消去律(前一主题已证明)给出x≡y(modp),从而x=y,因为二者都属于{1,…,p−1}。同样对x∈S, ax 也不会 ≡0(modp),因为p是素数且不整除a也不整除x。所以该映射确实又落回S中。
有限集合S到自身的单射映射自动是双射。因此{a⋅1,a⋅2,…,a⋅(p−1)}(modp)不过是{1,2,…,p−1}按另一种顺序排列而已。
把两个集合的全部p−1个元素分别相乘。一边得到(a⋅1)(a⋅2)⋯(a⋅(p−1))=ap−1(p−1)!;另一边由于只是同样的数重新排列,恰好得到(p−1)!。于是ap−1(p−1)!≡(p−1)!(modp)。
因为p是素数,1,2,…,p−1中没有一个能被p整除,故gcd((p−1)!,p)=1。再次应用消去律从两边约去公因子(p−1)!,得到ap−1≡1(modp)。■
(群论重述:由于p是素数,非零剩余在乘法下构成一个阶为p−1的群,而拉格朗日定理指出任何元素的阶——这里指使ak≡1成立的最小k——必须整除群的阶p−1;因此自动有ap−1≡1(modp)。)
若gcd(a,n)=1,则aφ(n)≡1(modn),其中φ为欧拉函数。
为什么成立?
这正是费马论证在一般模n下的推广:我们不再使用全体非零剩余(仅当n为素数时它们才在乘法下封闭),而是限制到真正与n互素的剩余——即拥有逆元的那些——同样的重排论证适用于这个更小、大小为φ(n)的封闭集合。
证明
设R={r1,…,rφ(n)}为模n的一个简化剩余系:每个与n互素的剩余类的代表元。
乘以a会置换R:对每个ri,由于gcd(a,n)=1且gcd(ri,n)=1(一个乘积与n互素当且仅当两个因子都与之互素),故gcd(ari,n)=1,于是arimodn仍属于互素剩余类;又因gcd(a,n)=1,由消去律,映射ri↦arimodn是单射。
有限集合R到自身(在剩余意义下)的单射映射即为双射,故{ar1,…,arφ(n)}(modn)不过是{r1,…,rφ(n)}的重新排列。
把每个集合的全部φ(n)个元素相乘:aφ(n)(r1r2⋯rφ(n))≡r1r2⋯rφ(n)(modn)。由于每个ri都与n互素,它们的乘积R=∏ri也与之互素,即gcd(R,n)=1。
从两边约去R(因gcd(R,n)=1而有效)得到aφ(n)≡1(modn)。■
这又是拉格朗日定理的另一种表现形式:与n互素的剩余在乘法下构成一个阶为φ(n)的群(单位群(Z/nZ)∗),任何元素的阶都整除φ(n)。
进阶实际应用与典型例题
欧拉定理是RSA公钥密码学的数学核心——解密的正确性依赖于取φ(n)次幂后回到1。费马小定理给出一种快速的概率素性检验(尝试底数a并检验ap−1≡1),并且可以在不使用扩展欧几里得算法的情况下,把模逆元计算为ap−2modp。这两个定理也是编码理论与伪随机数生成中普遍使用的快速模幂运算的基础。
例题: RSA解密为何有效
取p=5,q=11,则n=pq=55,φ(n)=(p−1)(q−1)=40。选取公钥指数e=3(因gcd(3,40)=1)和私钥指数d=27(因3×27=81=2×40+1,故ed≡1(mod40))。把m=2加密为c=memodn,然后解密c并检验能否恢复m=2。
解答
加密:c=23mod55=8。
解密是把密文取私钥指数次幂:m′=cdmodn=827mod55。因为存在整数k使ed=1+kφ(n)(此处81=1+2×40),所以m′≡med=m1+kφ(n)=m⋅(mφ(n))k(modn)。
由于gcd(m,n)=gcd(2,55)=1,欧拉定理给出mφ(n)≡1(modn),故(mφ(n))k≡1k=1(modn),因此m′≡m⋅1=m(modn)。
从数值上看:827mod55可用重复平方法计算(82=64≡9,84≡81≡26,88≡262=676≡676−660=16,816≡162=256≡256−220=36;再827=816⋅88⋅82⋅81≡36×16×9×8)。逐步对模55化简恰好得到2,证实解密还原了原始消息m=2——正如欧拉定理对任意消息和任意一对素数p,q所保证的那样,并不仅限于这个例子。
例题: 费马伪素数:检验"撒谎"的时候
证明341=11×31(是合数)仍满足2340≡1(mod341)——这恰好是若341为素数时费马小定理所预测的结论。
解答
分别对每个素因数取模来考察。模11:因为11是素数且gcd(2,11)=1,由费马定理得210≡1(mod11);因为340=10×34,所以2340=(210)34≡134=1(mod11)。
模31:这里25=32≡1(mod31),所以2在模31下的阶为5(φ(31)=30的一个因数,与费马/欧拉定理一致)。因为340=5×68是5的倍数,所以2340=(25)68≡168=1(mod31)。
因此2340≡1在模11与模31下都成立。由中国剩余定理(下一主题)可知,对两个互素的数11与31都≡1,就迫使2340≡1(mod341)成立,尽管341并非素数。
若合数n对某个与之互素的底数a满足an−1≡1(modn),就称其为**以a为底的费马伪素数**;341是以2为底的最小伪素数。这正是费马检验只是概率性启发式方法、而非素性证明的原因——这一陷阱将在下文进一步探讨。
研究研究前沿中的费马与欧拉:素性、伪素数与后量子密码学
根据费马小定理,若p=13且gcd(a,13)=1,则a12(mod13)等于多少?
在RSA中,n=55,φ(n)=40,公钥指数e=3,则私钥指数d必须满足:
341=11×31虽为合数却满足2340≡1(mod341)。这种现象叫什么?