点击任一公式,可查看并复制 LaTeX 源码。正文、公式及此工具均可单文件离线使用;剪贴板受限时可选中源码手动复制。
费马小定理与初等数论笔记
第三版 · 2026-10-10
从“这个式子是什么意思”开始,一步一步走到 RSA 和成功概率。
这次先看可以手算的例子,遇到一个疑问就停下来解释。符号在用到时引入,详细的基础证明和拓展放在第13—17章。第一次阅读可以先读第1—12章;如果你现在最关心概率,先读第9章的模55例子,再接着读第10—11章。
全篇主要反复使用三个例子:模7看幂的循环,模13看随机取幂,模55看RSA与分解。每次从数值换到一般式子,都说明数值对应哪个符号。
来源是第一份分享对话21轮、第二份11轮,以及你直接补充的加权概率解释。第一份原对话、第二份原对话、补充内容均保留。第一份对话中的一张公式报错截图只保留附件引用,未直接查看;正文公式重新排版。第18章提供问题与章节的对应表。
目录
第 1 章:取余、同余和模逆元到底在算什么
返回目录
1.1 先读懂一个式子
看这个式子:
它说的是:17除以5余2,2除以5也余2。把两个数相减,,恰好是5的倍数。
所以一般写成
就是“和除以有相同余数”,等价于“整除”。记号也是这句话。这里的模数取正整数。
以后我们只关心模5的余数时,就可以把17换成2。数本身变了,关心的余数没有变。
1.2 为什么能先取余,再做乘法
假设要算除以5的余数。17余2,23余3,先算,再取余得1。直接算,也余1。
原因是、。把乘积展开,除了,其他项都含因子5,取余时消失了。
加法同理,连续乘很多次也同理。因此算幂时,可以每乘一次就把结果缩成余数。这是后面所有幂表和快速幂的依据。
1.3 能乘,能不能直接除
先看失败的例子:
两边都余2,但与模6不同余。这里不能直接约掉2,因为2与6有公因子。
再看模5。,所以如果,两边乘3,就得到。
这个3叫作2的模5逆元:它负责把乘2“乘回去”。它不是通常分数中的。
什么时候有逆元?恰好在底数与模数互质时。互质就是说最大公约数为1,写作。例如2与5互质,2与6不互质。
为什么互质就够?裴蜀等式说,这时有整数使。模后,消失,剩下,所以就是逆元。这个基础结论的证明放在第13章;主线先记住它解决的是“什么时候能约掉一个因子”。
以后看到证明中“约掉”,先检查与模数是否互质。模质数时,只要不是的倍数,就满足这个条件。
第 2 章:费马小定理为什么能把大指数变小
返回目录
2.1 先看看3的幂发生了什么
算3的幂,每一步都模7:
| 指数 |
1 |
2 |
3 |
4 |
5 |
6 |
| 余数 |
3 |
2 |
6 |
4 |
5 |
1 |
第6次乘回到1。因此再乘6次,又会回到原来的余数。比如,所以
这里没有计算这个大整数,只计算了一个循环中的位置。
2.2 定理究竟保证了什么
把7换成任意质数,把3换成不是的倍数的整数,费马小定理保证:
“质数”与“不是它的倍数”都是条件。若,模7的正整数次幂全是0,就不可能等于1。
还有一种对任意整数都成立的写法:
若不整除,在前一式两边乘即可;若整除,这一式两边都余0。两种写法的适用范围由此看清楚了。
2.3 为什么一定能回到1:先看“乘3只是换了顺序”
把模7的六个非零余数全部乘3:
| 原来的余数 |
1 |
2 |
3 |
4 |
5 |
6 |
| 乘3后模7 |
3 |
6 |
2 |
5 |
1 |
4 |
下面一行仍是1到6,每个数出现一次,只是顺序换了。
为什么没有两个位置撞到一起?若,因为3可约掉,就有;而都在1到6之间,这就要求。为什么没有0?若模7为0,约掉3后也该为0,与范围矛盾。
现在把下面一行的六个数相乘。它们只是上面一行的重排,所以乘积模7相同:
括号中的乘积与7互质,可以约掉,于是。
一般的证明完全照这个过程做:把乘,用逆元证明没有重复、没有0,再把全部数相乘并约掉原乘积,就得到。对于,列表只有1,也一样成立。
2.4 它能怎么用,又不能怎么用
除了缩小指数,还能证明整除。比如,就是。
也能找逆元:对,,所以是的模逆元。例如模5时,,与第1章算出的逆元一致。
但是,满足类似的幂同余,不能反过来保证模数是质数。比如,15仍然是合数。做素性判断时,必要条件与充分条件要分开。
即使恰好用了“模数减1”的指数,也会有反例:,而,所以。一次底数检验通过,仍不足以保证质数。
第 3 章:欧拉函数数什么,欧拉定理为什么成立
返回目录
3.1 你要找的欧拉公式,先从12开始数
在1到12中,与12互质的是
一共有4个。欧拉函数,就是记录这个数量。它没有在数“小于12的质数”或者“12有几个质因子”。例如1不是质数,却被算进来了;2是质数,却与12不互质。
约定。对,数1到或者数1到结果一样,因为本身不与互质。
3.2 为什么公式里会出现乘积
12的不同质因子是2和3。不与12互质,就是被2或者3整除。在1到12中:
- 2的倍数有6个,要去掉;
- 3的倍数有4个,也要去掉;
- 6的倍数有2个,被去掉了两次,要补回来一次。
所以。把共同因子12提出:
这就是乘积公式的来源。每个不同质因子只贡献一次“去掉它的倍数”,它在里出现几次不改变排除条件。
于是,若的不同质因子是,有
多于两个质因子时,也按“减单项、加两项交集、减三项交集……”处理。乘积展开恰好有同样的正负号。为什么每个该排除的整数最终恰好排除一次,见第13章的容斥补充。
例如,所以。质数只有一个质因子,得到。
3.3 模数换成合数,费马的思路还能用吗
模10时,有逆元的余数是。把它们全部乘3:
| 原来的余数 |
1 |
3 |
7 |
9 |
| 乘3后模10 |
3 |
9 |
1 |
7 |
又是同一批数的重排。把两行分别相乘,约掉,就得到。
一般地,只要,乘就能在所有与互质的余数之间重新排列:没有重复,因为可约;输出也互质,因为和输入都有逆元,它们乘积也有逆元。列表中每个数都可约掉,得到
这就是欧拉定理。为质数时,,它就变回费马小定理。
3.4 为什么仍要检查互质
模10时,余6,不余1。2没有进入刚才的互质列表,排列证明根本没有覆盖它。
使用方法是:先检查底数与模数互质,再把指数按缩减。例如模10,100是4的倍数,所以余1。
但只是一个保证可用的循环长度,可能比实际需要的长。这引出下一个问题。
第 4 章:为什么有些幂更早回到1
返回目录
4.1 欧拉给了6,实际可能只需要3
模7时,2的幂为
费马保证,而它在第3次已经回到1了。
第一次回到1所需的正指数,叫作这个底数的乘法阶。记为。同一模数下,底数不同,阶可以不同:模7的3的阶是6。
阶只对与模数互质的底数这样定义。欧拉定理保证至少有一次回到1,所以能在所有这样的正指数中取最小值。
4.2 为什么其他“回到1”的指数都是阶的倍数
2模7每3步回到1,因此第6、9、12步都会回到1。反过来,也没有别的正指数能做到。
设某个指数也使。把除以3,写成,其中只能是0、1、2。于是的余数与相同。若或2,余数分别为2、4,不能是1,所以只能。
一般地,把阶记作,同样作除法,。若,便有。若,这会比更早回到1,违背的定义。因此,即。
所以
取,得到。这就是为什么阶必须整除欧拉函数。
4.3 为什么可以对指数取模,幂的值却还是模原来的数
刚才2的阶是3,因此模7只需看指数除以3的余数:100余1,所以答案为2。
有两个不同的问题:
- 指数除以3取余:找它位于循环的第几格;
- 幂的值除以7取余:求这格里的数。
循环的长度是3,格子里的数却是模7的余数。不能因为指数改成模3,就把幂的值也改成模3。这一点在概率证明中还会再遇到。
4.4 如何找一个底数的阶
先算一个保证回到1的指数,比如。真实的阶必须是它的因子,所以只需检查这些因子。
模7时候选为1、2、3、6。对3检查:余3、余2、余6,都不是1;余1,所以阶是6。对2检查到3,就能找到阶3。
关于“一个幂的阶怎样由原来的阶算出”“两个阶互质时,为什么乘积的阶等于两者乘积”,详证放在第14章。先把“阶是第一次回到1的步数”这个意思建立起来。
第 5 章:原根为什么可以给所有非零余数编号
返回目录
5.1 3与2的区别,不只是回来的时间不同
模7时,3走过的余数是
下一次回到1。这六个数把所有非零余数走了一遍,没有漏掉任何一个。
2走过的却只有,随后就回到1,没有走到3、5、6。
我们把像3这样能用连续的幂走遍所有互质余数的底数,叫作原根。因为互质余数有个,所以它的阶恰好是。
5.2 有了原根,能多做什么
仍取模7的原根3:
| 编号,也就是指数 |
0 |
1 |
2 |
3 |
4 |
5 |
| 对应余数 |
1 |
3 |
2 |
6 |
4 |
5 |
每个非零余数现在有一个唯一编号。例如余数5的编号是5,余数2的编号是2。
这是后面概率证明需要原根的原因:均匀选一个余数,等价于均匀选一个编号。因为两行一一对应,并且没有重复,每个编号的概率都相同。
理论证明中可以利用这样的编号;实际分解算法只算幂和最大公约数,不需要把编号求出来。
5.3 每个质数都有原根吗
有。模每个质数,都能找到走遍个非零余数的底数。证明要用“非零多项式的根数不超过次数”和关于阶的两个小结论;放在第14章单独展开。
第一次顺着主线读时,可以先使用这个已经明确标出的定理,继续看它怎样帮助数概率;想核查它为什么成立,再回读证明。
合数模数却不一定有原根。例如模8的互质余数是,而模8都为1。任何底数最多走两格,走不遍四个数。
5.4 原根有多少个
模7的原根有两个:3和5。用3给余数编号后,5就是。它每次在六格循环中向前跳5格,仍能走遍六格。
为什么跳2格就不行?它只访问编号0、2、4,再回到0;跳3格只访问0、3。
一般说,长为的循环,每次跳格,能走遍全循环恰好要求与互质。因此若有原根,原根总数就是。模质数时,是。第14—15章给出阶公式与计数证明。
第 6 章:中国剩余定理怎样把两个余数合起来
返回目录
6.1 先解一个真的问题
要找一个数,同时满足
满足第一个条件的数是。检查模5的余数,第一个合适的是8。
加15不会改变模3和模5的余数,所以也都合适。事实上所有整数解恰好是,其中是任意整数。
6.2 为什么只有一个模15的答案
如果都合适,那么既被3整除,也被5整除。3与5互质,所以被15整除。
因此两个答案只能相差15的倍数。这里的“唯一”,指的是模15的余数唯一,并不是说世界上只有一个整数解。
这也是RSA里反复用的步骤:模一样、模也一样,而且是不同质数,就能说模一样。
6.3 怎样构造答案,不靠一个个试
找两个数,让它们分别只负责一个条件:
- 10模3余1、模5余0,负责第一个余数;
- 6模3余0、模5余1,负责第二个余数。
所以,模3余2、模5余3。再模15取余,得到8。
10怎么来的?5模3有逆元2,所以模3为1,同时仍是5的倍数。6同理,是。
对于互质的模数,同样能用逆元构造“模余1、模余0”的数和另一个相反的数,再按所需余数加权相加。这证明了解存在;上一节的差值论证证明了唯一性。多个两两互质模数的完整公式在第13章。
6.4 模数不互质,为什么有时没解
若要求模4余1,同时模6余2,就没有解。第一个要求是奇数,第二个要求它是偶数,两个条件矛盾。
若模4余1、模6余3,则两个条件都要求奇数,确实有解:9。此时重复的周期是12,即4与6的最小公倍数,不是24。
一般的条件是:余数之差必须被模数的最大公约数整除。对于两个模数,写作
有解时,答案按重复。多个模数则检查每一对的这个条件。为什么两两相容就足够、如何实际合并,完整证明留在第13章,避免现在打断RSA主线。
第 7 章:RSA为什么能把消息还原回来
返回目录
7.1 先把每个数的用途说清楚
取两个不同质数5和11,相乘得到。在这个例子中,。
接着选加密指数。它与40互质,所以在模40下有逆元。取,因为
这里逆元的模数是40,不是55:我们要安排的是两个指数相乘后,比1多出一个欧拉指数的倍数。
消息取0到54之间的整数,加密是,解密是。两步合起来,计算的是模55。
公钥是,私钥指数是27。这些很小的数只用来手算和理解证明。
7.2 对互质消息,欧拉定理怎样接上来
若与55互质,欧拉定理给出。因此
于是解密恢复原消息。例如加密得到8,而模55为2。
一般地,,选与互质,再用逆元得到,使。对互质消息,有。
所以所需的指数不是随意假设出来的:先选互质的,再求它的逆元。 例如时,就给出一组形式上的逆元;这里只用它说明存在性,具体例子仍用。
7.3 消息不互质怎么办:把问题拆成两个质数
例如与55不互质,不能直接使用模55的欧拉定理。但模5时,5的任何正整数次幂都余0,已经与原消息一致。
模11时,5不是11的倍数,费马小定理给;而,所以。
两个质数下都对了,用中国剩余定理合起来,就有。实际加密余15,解密余5。
任意消息都按这个办法证明:固定质数,若,两边都是0;若,用费马小定理,因为。模同理,最后合并。因此包括0、质因子的倍数在内,每个消息代表都能还原。
7.4 这为什么说明分解有用
如果知道55的因子5和11,就能算出40,再从公开的指数3求出私钥27。
一般地,知道就能算,从而求私钥。这证明了“能分解,就能求私钥并解密”。它还没有证明任何能解某个密文的办法都必须先分解。这个逻辑问题在第12章单独讨论。
第 8 章:知道私钥后,为什么平方能帮我们分解
返回目录
8.1 先看一个奇怪的数:34
不知道55的因子,能不能从某个算出的数找到它们?先看
34不是1,也不是模55的代表54,却平方后变成1。这个现象比“回到1”本身更有用。
平方为1意味着。而、。与55分别求最大公约数:
因子就被分开了。算法想找到的,正是34这样的数。
8.2 为什么1和54没有这个效果
若,,最大公约数是整个55,没拆开。若,它就是模55的,则,也没有拆开。
所以要找的是:平方后变成1,但自己既不是1也不是的余数。 这叫作1的非平凡平方根。“非平凡”在这里就指排除这两个显而易见的根。
为什么它一定能拆开?模质数时,意味着,所以至少整除其中一项,得到或者。模也一样。
| 模 |
模 |
合起来的情况 |
| 1 |
1 |
模为1 |
|
|
模为 |
| 1 |
|
两边符号不同,可以分解 |
|
1 |
两边符号不同,可以分解 |
在最后两种情况中,一个质因子进了,另一个进了。因是奇质数,同一个质因子不能同时整除相差2的这两项。求最大公约数就恰好挑出其中一个因子。
这也说明后面的分解论证限定为两个不同奇质数的乘积。
8.3 私钥怎样让我们找到34
继续用。先计算
把所有因子2拿出来,剩下的5是奇数。任选与55互质的底数,已知。与其一步算到80,我们先算,再不断平方。
选:
| 从哪里算起 |
指数 |
模55的余数 |
| 初始项 |
5 |
32 |
| 平方一次 |
10 |
34 |
| 平方两次 |
20 |
1 |
看到第一次出现1,就回看紧前一项34。它平方为1,又不是1或54,所以成功。
整个过程只用到了公开的55、3和已知的27。5和11只在证明及验算时使用,算法计算时不用先知道它们。
8.4 也会失败吗
会。取,初始项已经是1,没有找到前面那个有用的数。取,初始项是54,一平方就到1,但前一项只是,也没有用。
所以这是一种随机尝试:有些底数成功,有些失败。下一章才讨论成功与失败怎样数。
8.5 把刚才的计算写成完整算法
令,把它写成,其中为奇数。先使用原对话的条件;它保证任何互质底数都有。第16章说明条件还可以放宽。
- 在中均匀选,先算。若,因,已直接找到真因子,输出。
- 若,算,取0到的余数。若,这次失败,重新选底数。
- 最多平方次。每次令。若,用替换继续;若,检查。若,失败;否则输出和另一个因子。
为什么最后一个分支的也不会是1?初始1已被排除,而过程中一出现1就结束。因此该分支确实找到非平凡平方根。
为什么不会一直平方不到1?第次得到,所以合法输入下必定到达。停止时输出的因子可以用乘法核验。
第 9 章:成功概率的问题,具体在数哪些底数
返回目录
9.1 先别急着写概率公式
模55时,先只看与55互质的底数。它们共有个。如果每个等可能被选中,成功概率就是“成功的底数个数除以40”。
我们在研究一次随机选底数。选定底数以后,取幂和平方都由它确定,不再额外掷一次骰子。
第8章说明,算法成功取决于“第一次平方到1之前,出现的是34那样的数,还是54那样的数”。怎样不用逐个计算大幂,就描述这个区别?把模55拆成模5和模11来看。
9.2 同一个计算,在两个质数下到1的时间可能不同
取刚才的,初始项是。模5和模11分别算:
| 已经平方几次 |
模5的余数 |
模11的余数 |
模55的余数 |
| 0,尚未平方 |
2 |
10 |
32 |
| 1 |
4 |
1 |
34 |
| 2 |
1 |
1 |
1 |
模11先到1,模5晚一步到1。因此在中间那一行,一边是1,另一边是,正好给出非平凡平方根34。
我们给这两个“第一次到1的时间”取名字:是模到1时已平方的次数,是模的次数。在这个例子中,所以。
初始项就为1时,次数记为0。两个次数都由随机选出的决定,所以它们是随机变量。这个词在这里只表示“选不同底数,得到的次数可能不同”。
9.3 为什么到达时间不同就成功
假设模到1较晚。在它刚要到1的那一步,模早已是1;模前一项还不是1,但它的平方是1,所以前一项只能是。
因此两个模数下的前一项是。它就是第8章说的可分解情况。模较晚时,情况相反,得到。
若两边同时首次到1,且次数大于0,那么前一步两边都还不是1,只能同时为;合起来就是模的,算法失败。若次数都是0,初始项就为1,也失败。
于是,对互质底数,
四个平方根中两个有用,并不能直接说“概率一半”:算法产生这四个根的机会未必相同。我们真正要数的是到达时间相同的底数有多少。
9.4 对模55,可以直接把40个底数分组
模5的初始项是。指数5模4余1,所以初始余数与模5相同:
| 模5 |
初始项 |
第一次到1的次数 |
| 1 |
1 |
0 |
| 4 |
4 |
1 |
| 2或3 |
2或3 |
2 |
所以四个等可能余数中,次数0占一个、次数1占一个、次数2占两个,概率为。
模11时,初始项只能为1或。把十个非零余数都计算一次:
| 初始项模11 |
对应模11 |
|
| 1 |
1、3、4、5、9 |
0 |
| 10,也就是 |
2、6、7、8、10 |
1 |
所以取0、1各有一半概率。注意:不是说所有“到达次数”都一样可能;模5的次数2就比次数0多一倍。
9.5 同一个底数的两边,为什么可以独立
把模5的四种非零余数放成四行,模11的十种非零余数放成十列,一共有40个格子。
中国剩余定理保证,每个格子都对应唯一一个模55的互质余数。所以均匀选40个底数,等价于均匀选这40个格子。
已知选中了哪一行,并不会偏向这一行中的哪一列:十列仍各有一格,仍然各占。这就是此处的独立性。
例如对应一行,对应五列,两者同时发生有个格子,占。也有5格;没有的列。因此失败底数是个,成功底数30个。
“两个变量来自同一个底数”本身不保证独立。这里能独立,是因为均匀底数经CRT对应到一个完整、均匀的行列格子表。
9.6 现在缺哪一步一般证明
模55我们已经数清楚了。但对于别的两个奇质数,不能每次都列完所有底数。
接下来只补两件事:第一,取幂后各个到达次数的概率怎样一般地算;第二,知道每个次数的概率都不超过一半,怎样推出“到达时间相同”的总概率也不超过一半。
第10章处理第一件,第11章处理第二件。先不需要学习抽象群的全部定义。
第 10 章:取幂以后为什么还均匀,怎样数到达次数
返回目录
10.1 先承认:均匀输入不总有均匀输出
均匀从1、2、3中选一个数,再问“是不是奇数”,回答“是”的概率为,“否”为。输入的三个数等可能,输出的两种回答却不等可能。
所以“底数均匀”还不能直接推出“取幂后的结果均匀”。要检查:每种可能输出由多少个输入产生。数量相等,才会等可能。
10.2 用模13的例子,把输入和输出全部列清楚
模13的原根2把十二个非零余数写成,其中。均匀选底数,就等价于均匀选这十二个编号。
现在取奇数次幂。因为,令,就有
8的幂依次是,随后又回到1,所以它的阶是4。算时,只需知道在四格循环中的位置。
| 除以4的余数 |
十二个编号中对应的 |
除以4的余数 |
模13 |
| 0 |
0、4、8 |
0 |
1 |
| 1 |
1、5、9 |
3 |
5 |
| 2 |
2、6、10 |
2 |
12 |
| 3 |
3、7、11 |
1 |
8 |
四种输出各有三个输入,所以每种概率都是。
这个表分成两步:先把十二个编号分成四组,每组恰好三个;再乘3,因3与4互质,只把四组的顺序换了。等大小分组,加上重新排列,说明这里取幂后的结果确实均匀。
10.3 为什么指数取模4,值却取模13
4是8的循环长度,13是计算幂的余数所用的模数。
比如:指数11除以4余3,所以去找循环的第3号位置,得到。这里最终答案是模13的余数5,完全没有把幂的值改成模4。
如果表中的乘3换成乘2,四种指数余数就只能变成0或2,输出不再覆盖四个位置。后面一般证明要求那个乘数为奇数,正是为了使它与2的幂互质。
10.4 一般情况为什么也是这两个步骤
设是奇质数,把中的所有因子2拿出来,写成
例如时,,所以。
算法使用的奇数满足。这是因为整除,而是奇数,所有奇数因子都得留在里。于是,也是奇数。
取一个原根。它的循环长为,均匀底数写作,编号均匀遍历。令,就是每次在原根的大循环中跳格;走步才回到1,所以的阶是。
取幂后,
先把编号按取余,每种余数有恰好个编号,所以仍均匀。再乘奇数,它与互质,只重新排列这些余数。所以输出均匀遍历
这是一批大小为的余数。主线先用“幂组成的循环”理解它;群论语言把它称为一个循环子群,详细说明见第15章。
10.5 从均匀余数到到达时间,还要再数一次
回到模13的四个等可能结果:
| 初始项 |
继续平方时的变化 |
首次到1的次数 |
| 1 |
已经是1 |
0 |
| 12 |
|
1 |
| 8 |
|
2 |
| 5 |
|
2 |
次数0有一个结果,次数1有一个,次数2有两个。因此概率又是。
为什么这里的次数恰好是阶里的2的次数?初始项若阶为,平方次相当于取次幂。第4章说,这个幂等于1恰好要求,也就是。所以第一次到1在。
10.6 长为8的循环,次数为什么是“一个、一个、两个、四个”
想象某个余数的阶是8。先算的阶:要使它的次幂等于1,就是要求。
| 编号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
| 的阶 |
1 |
8 |
4 |
8 |
2 |
8 |
4 |
8 |
| 首次到1的次数 |
0 |
3 |
2 |
3 |
1 |
3 |
2 |
3 |
次数0有一个,次数1有一个,次数2有两个,次数3有四个。它们占比分别为。
一般长度为时,阶为1的只有单位元1;阶为的有个,。为什么是这个数?
要让的阶恰好为,编号必须写成,其中在里是奇数。否则再多含一个因子2,就会更早回到1。这段编号中恰好一半为奇数,即个。阶为1的边界对应,单独计数。
所以一般分布为
这些数量加起来是,没有漏掉任何输出。最大的一组占一半,所以每个到达次数的概率都不超过一半。模的证明相同,只需把换成中因子2的次数。
更一般的“阶为的元素有个”,就是把这里“编号必须为奇数”换成“编号必须与互质”;详证放在第15章。
第 11 章:为什么一串概率求和,仍然不超过一半
返回目录
11.1 先只解决你最后问的那个疑问
我们已经知道:取每个具体值的概率都不超过一半。可它有几个可能值,难道把几个“一半”加起来还能不超过一半?
先把问题说成一句话:先看产生了什么结果,再问能否恰好匹配它。 两者独立,因此知道的结果,不改变原来的分布。无论产生什么,匹配它的概率都不超过一半。
最后把各种的情况按出现比例合起来,就是对这些匹配概率取平均。参与平均的数都不超过一半,平均也不超过一半。
下面用模55的分布把“按比例合起来”算出来。
11.2 想象按模5的到达次数分成三堆
第9章得到的分布为:
| 次数 |
模5的出现比例 |
模11的匹配比例 |
| 0 |
|
|
| 1 |
|
|
| 2 |
|
0 |
为了看清比例,想象有100份等权重的情况:占25份,占25份,占50份。这是把概率按100份表达,并不是声称实际随机做100次一定出现这些数量。
在第一堆里,匹配成功的比例是;第二堆也是;第三堆是0。所以所有情况中,匹配的比例为
乘前面的,就是在提醒:这一堆只占全部情况的四分之一。不能把这一堆内部的一半,当成全部情况的一半。
11.3 只知道上界,也能算出总上界
现在不用的精确分布,只知道三种匹配概率都不超过。把第三堆的0也换成更宽的上界,得到
三个权重加起来是1,所以右边为
实际概率是,通用上界是;两者可以同时成立。上界只是说“再大也不会超过这里”,没有说实际值必须等于它。
11.4 把这个已经看懂的过程写成一般式子
相等可以发生在0、1、2等不同值上。不同值的相等情况互不重叠,因此把它们加起来。
独立性允许把“两个都取”的概率写成乘积:
求和号只是“对所有可能的重复这项加法”。令作为权重,令作为每堆内的匹配概率。每项都满足,且权重非负、总和为1。所以
每一行都在做前面那个三堆例子的同一件事。关键是权重总和为1。 如果真的是直接相加三个,当然会得到,那就不是这里的计算了。
11.5 独立性不能省:否则“每堆内匹配概率”会改变
让等可能取0或1,再直接令。取每个值的概率确实都是,但它与总相等,相等概率为1。
原因是:一旦知道,必为0,匹配概率变成1,而不是原来的。这一例子中不能把联合概率拆成乘积。
回到RSA,独立性来自第9章的完整行列格子表。一般下,表有行、列,每个格子对应一个互质底数,均匀抽样后,各行列独立。只读行,只读列,分别对行列作计算也不改变这种独立性:任意选定的行组与列组,其格子数仍是两组大小的乘积。
11.6 至少一半的成功率,终于接出来了
第9章证明:对互质底数,失败恰好是。因此
成功
这句话的完整前提是:两个不同奇质数的乘积;正的指数保证所有互质底数的次幂为1;从全部互质底数均匀抽样。原对话的且满足这些要求。
若按第8章从全部候选抽样,不互质的底数直接给因子,剩余互质底数的条件分布仍均匀。因此全部候选下的成功率也至少一半。
对55,40个互质底数中30个成功,另外14个非互质底数都直接成功,所以全部54个候选中44个成功,概率为。它与对应不同的抽样范围。
读到这里,通用下界的证明已经完成。精确概率的长公式放在第16章,不需要用它才能理解“至少一半”。
第 12 章:失败后重试,以及这到底说明RSA什么
返回目录
12.1 一次失败不推翻算法
算法允许选到1或这样的失败底数。失败后重新独立选一个底数,才是一轮新的尝试。
单次失败概率至多,独立重复两次都失败,概率至多;三次至多;次至多。
例如20次全部失败的概率至多,约为百万分之一。它很小,仍不是0。
12.2 平均两次,为什么不是两次一定成功
“期望次数至多2”说的是许多独立运行的平均表现:有的第一次成功,有的要好几次。这不承诺每次都在第二次以内成功。
若每次成功概率为,第一次成功恰好在第次的概率为。对于,平均次数就是
为什么这串和为2?总尝试次数可以看成“第一轮需要做吗、第二轮需要做吗……”的计数。第一轮一定做;第二轮只有首轮失败才做,概率;第三轮概率;依此类推。平均所做轮数为。一般得到,所以时至多2。
如果总是重复同一个底数,失败会一直重复,这个概率相乘和平均次数结论就不能照搬。
12.3 “能分解,所以能解密”不能倒过来读
把已经证明的事情分开看:
| 已知什么 |
能做什么 |
本文的位置 |
| 模数的两个因子 |
算欧拉函数、求私钥并解密 |
第7章 |
| 和 |
解二次方程找到 |
下一节 |
| 公钥和有效私钥指数 |
用随机算法找到 |
第8—11章 |
| 只会从某个密文求出原消息 |
这项能力本身没有给出上述算法需要的 |
不能直接代入前面证明 |
所以“私钥指数可以帮助分解”与“任何解密办法都必须先分解”不是同一个命题。本文证明了前面的计算关系,没有证明后面的必然性。
假如一个办法能从一般公钥恢复有效的私钥指数,再接上第8章,就得到对应模数的随机分解办法。但某个容易还原的密文,或者仅能求逆的黑箱,并不自动提供。
这一差别可对照 Handbook of Applied Cryptography 第3章 Fact 3.30与第8章 Fact 8.6。这些讨论的是数学计算问题;实际RSA还涉及消息编码和填充,本文只解释这里的数论关系。
12.4 为什么知道欧拉函数,也会暴露两个因子
对于,
因此知道与,就知道两个因子的和,同时已知它们的积。
在55的例子中,和为,积为55。两个数就是方程的两个根,得到5与11。
一般令,解得
这解释了为什么欧拉函数的信息与分解密切相关。但正如上一节强调的,能够还原一个消息与知道欧拉函数仍是不同的已知信息。
12.5 到这里,可以怎样回读
如果第11章的加权平均已看懂,回头只核查两个来源:第10章为什么每个到达次数概率至多一半,第9章为什么两边独立、为什么不同步就能分解。不要同时背所有公式。
若卡在某个基础定理,再读对应补充:第13章处理逆元、唯一分解和CRT;第14章证明原根存在;第15章证明群中的阶与循环群计数;第16章放精确概率及复杂度;第17章放计数辨析、拓展和练习。这些章节供按疑问回查。
第 13 章:补充证明:逆元、唯一分解与CRT
返回目录
这一章供遇到“这一步还没证明”时回查。第1—12章已经给出主线使用方法;这里补足它们背后的基础结论。可按小节标题选读,不需要一次全部读完。
13.1 从最小正线性组合证明裴蜀等式
定理。 对不全为零的整数 ,存在整数 ,使
令
集合非空:若 ,选择 或 、 即得到 ;否则用 。由良序原理, 有最小元素 ,写作 。
对 作带余除法:,。于是
如果 ,它也是 的元素,却比 小,矛盾。故 ,即 。同理 。
另一方面,任意正公约数 都整除 的整数线性组合,所以 ,进而 。因此 既是公约数,又不小于任何正公约数,正是 。所需的 已由构造给出。证毕。
关键不是猜出线性组合,而是先取最小正组合,再用带余除法排除更小的正组合。这个证明不依赖质因数分解,后面的论证因而没有循环。
13.2 互质消去律与欧几里得引理
若 且 ,由裴蜀等式取 ,乘以 :
右侧两项均被 整除,故 。这就是互质消去律,其中 不必是质数。
作为特例,若 是质数且 ,则 或 。因为一旦 ,质数的因数只有 ,所以 ,可应用消去律。这称为欧几里得引理。
质数条件不可随意删去:,但 不整除任何一个因子。反复应用欧几里得引理,可得质数若整除有限乘积,必整除至少一个因子。
13.3 模逆元存在的充要条件
模 的逆元是满足 的整数 。对 ,有
模有逆元
充分性:由 ,取 。
必要性:若 , 的每个公约数都整除左边,因此整除 ,所以只能为 。
逆元在模 意义下唯一:若 ,则 ;由互质消去律,。
因此,当 时,从 可以乘以逆元,推出 。这是后面约去阶乘或剩余类乘积的依据。
13.4 两个常用推论
互质因子的乘积仍与模数互质。 若 、,相乘得到
任意 的公约数都整除 ,故 。有限多个因子可归纳处理。
互质的两个数都整除一个整数,则其乘积也整除。 若 、、,写 。由 与消去律,,故 。
13.5 如何实际计算逆元
带余除法给出 ,因为 使两对数的公约数完全相同。反复除法时非零余数严格变小,最终停在最大公约数;再回代即可找到裴蜀系数。这就是扩展欧几里得算法。
例如 ,所以 ,从而
这里逆元符号表示模运算中的整数剩余类,不是普通分数 。
13.6 定理的准确表述
每个整数 都能写成有限个质数的乘积。除排列顺序外,质因子及其重数唯一。将相同质因子合并,可以写成
其中 两两不同,。例如 。
“存在”和“唯一”是两个不同问题,不能只证明能拆分,就认为不可能有另一种拆分。
13.7 存在性:强归纳法
自身是质数。假设所有满足 的整数均可分解。
若 是质数,结论立即成立。若 是合数,可写 ,其中 。由归纳假设, 都是质数的有限乘积,合在一起给出 的分解。因此对所有 成立。
13.8 唯一性:配对和终止分别证明
假设
是两种分解。 整除右侧,由欧几里得引理,它整除某个 。两个数都是质数,所以 。重排右边,将它放到第一位,再在普通整数等式中约去相同质数。
重复此步骤,每次都会找到并约去一对相同质因子。
为什么两边一定同时约完? 假设 。约去左侧全部 个因子后,得到
右侧至少剩一个质数,每个质数都不小于 ,故乘积大于 ,矛盾。 同样矛盾。所以 ,每一步配对后所有质因子一一相等,重数也相同。证毕。
能够配对来自欧几里得引理;必然同时结束来自非空质数乘积大于 。这是原对话“为什么最终同时约完”的完整回答。
13.9 最大公约数与最小公倍数的质数幂描述
给定有限多个正整数,把出现的质数统一记为 ,缺少某个质因子时指数记为 。两个数的最大公约数取每个指数的最小值,最小公倍数取最大值:
理由是:由唯一分解,一个正整数整除另一个,当且仅当每个质数指数都不超过对方。公约数和公倍数的条件遂逐个指数决定。
于是 。一个整数同时被所有 整除,当且仅当被 整除;整数为 的情况也显然成立。这将说明中国剩余定理的解周期。
13.10 一般容斥为何成立
令 是能被 整除的整数集合。统计其补集时,按所选集合个数交替加减,并把空交集解释为全部 个整数。
对一个落入恰好 个 的整数,它在展开中的总权重为
若 ,权重为 ;若 ,权重为 。所以恰好只计入互质整数,每个计入一次。这证明了容斥,而非仅把它作为未证明的工具使用。
记 。不同质数互质,每个交集对应其乘积的倍数,故
空乘积取 。展开 时,从每个括号选 或 。选择负项的下标恰好形成子集 ,贡献 ;每个子集出现一次。因此
乘积公式是容斥展开的因式分解表达。 质因子指数虽影响 ,排除的倍数类别却只由不同质因子决定,所以每个质数只出现一个括号。
13.11 两两互质模数的定理
设正整数 两两互质,余数 为任意整数,令 。则
一定有解,所有解恰为 ,。
“唯一”指模 的唯一剩余类,而非只有一个整数解。模数为 的条件不限制任何整数,可以删除;若全部为 ,全部整数就是模 的一个剩余类。以下构造处理剩余的模数。
13.12 存在性:构造对自己的模数余一、对其他余零的项
令 。因为其他每个 都与 互质,第 13.4 节的乘积互质性质给出 。
由裴蜀等式,取 ,令 。于是
第二式来自 。再取
对任意固定 取模,其余项全为 ,只有 ,所以满足全部方程。存在性得证。
13.13 唯一性与全部解
若 都是解,则每个 都整除 。由于模数两两互质,任意部分乘积仍与下一个模数互质,可反复用互质乘积整除推论,得 。
反过来, 对各模数都与 同余,所以仍是解。因此全部解恰为该形式。
13.14 手算构造公式
求 、、。
,、、;各自逆元可取 ,因为对应乘积模自身模数均为 。于是
全部解 。直接检验 分别余 。
13.15 相容性条件与正确周期
对任意正整数模数 ,方程组 有解,当且仅当
对全部
若有解,令 ,全部解恰为 。
模数不互质时,相容性有实际限制。例如 与 无解,因为公约数 不整除余数差 。互质时公约数为 ,条件自动满足,且 等于乘积,所以标准形式是特殊情形。
13.16 两个模数:必要性
考虑 、,记 。
若存在 , 整除 与 ,也就整除两者之差 。因此 必要。
13.17 两个模数:充分性与构造
假设 ,写 、、,其中 互质。
先令 ,保证第一个方程。第二个方程要求 ,等价于存在整数 使
用裴蜀等式取 ,令 、,便满足要求,因此可取 。充分性得证。
若 均为解,则 都整除 ,由第 13.9 节,。反过来加上该最小公倍数的任意整数倍仍是解,因而全部解及周期成立。
13.18 非互质的手算例子
求 、。公约数 整除余数差 ,所以有解。
写 ,代入得到 。这一同余等价于 :是同时将整除等式的两边及模数除以 ,并非保持原模数的无条件约分。
所以 ,取 ,得
周期是 ,不是乘积 。
13.19 多个模数:为何两两相容足以给出共同解
必要性仍来自任意两个方程的差。充分性必须另证,不能只说“每一对有解,所以整体有解”。以下使用质数幂分解。
写
每个 是所有模数中该质数指数的最大值,所以可选一个下标 ,使 。提取约束
这些模数是不同质数的幂,两两互质,由标准形式得到公共解 。
现在证明它满足原方程。固定 ,设 在 中的指数为 。若 ,该质数幂同时整除 与 ,故
而构造保证 ,所以降到 后仍成立,结合相容性得 模该质数幂。对 的所有不同质数幂都成立,互质乘积整除推论给出 。
由于 任意,满足全部原方程。若 ,则全部模数为 ,直接取任意整数即可。
若选择最大指数的模数有多个,相容性使它们的余数模该质数幂相同,因此提取约束没有歧义。
13.20 唯一性与一个多模数例子
任意两个解之差被所有 整除,因此被 整除; 又总是解。所以解模 唯一。 也是解集合的最小正平移周期:任何保持解的正平移量都必须被全部模数整除,因此被 整除。
例如取 ,余数分别为 。三个公约数为 ,都整除对应余数差。,可提取
取 ,逐项检验模 分别余 ,故全部解为 。
第 14 章:补充证明:质数为什么一定有原根
返回目录
第5章已经用模7说明原根是什么。这一章只解决存在性与相关阶公式,适合想追问“每个质数为什么都能找到这样的底数”时阅读。证明先准备两个工具,再限制多项式的根数,最后逐个拼出所需的质数幂周期。
14.1 辅助引理一:一个幂的阶
若 的阶为 ,,则
先设 。令 ,写 、,其中 。对正整数 ,
最后一步用互质消去律。所以最小正 是 。当 时, 的阶为 ,右边也是 。这补全了原对话原根证明中直接使用的公式,也覆盖后面循环群计数的单位元。
14.2 辅助引理二:阶互质时乘积的阶
设 、,且 。模整数的乘法可交换,因此
先有 ,故 整除 。
又 。取 次幂,得到 。,所以 ,进而 。由 互质,推出 。同理 ,再由互质乘积整除推论,。结合 ,得 。
这样无需使用负指数也能完成证明。在一般群中还必须要求两个元素可交换,否则幂不一定可拆开。
若阶不互质,结论未必成立:模 时 的阶均为 ,但 ,乘积的阶为 。
对任意互质于模数的 ,令 ,则 ,故乘积的阶总整除 。互质阶条件保证这个整除进一步达到等号。
14.3 为什么非零多项式的根数不超过次数
在模质数 的系数运算中,设 的次数为 ,最高次系数模 不为 。它最多有 个不同剩余类的根。
先证明因式分解的依据。对每个 ,
逐项相加给出 。若 ,便在模 的多项式环里得到 , 次数为 。
时非零常数没有根。归纳地,若没有根结论显然;若有根 ,对另一个不同根 ,有 。因为 质数且 ,可消去 ,故 。归纳假设使其他根最多 个,加上 至多 个。证毕。
质数条件在此保证非零元素可逆。模 的多项式 有 四个根,已超过次数,说明合数模数不能照搬。
14.4 每个质数都有原根:完整构造证明
时,非零剩余类只有 ,其阶为 ,已经是原根。以下设 ,令
其中 为不同质数。先为每个最大质数幂构造一个对应阶的元素。
第一步:找到不被较短指数消掉的元素。 多项式 次数为 ,故最多有 个根,而非零剩余类有 个。因此可选择非零 ,使
第二步:识别阶中的完整质数幂。 令 。由第 4 章,,但 ;否则幂必等于 。
与 只在 的指数上差 。 的其他质数指数已由 限制,若 的指数也至多 ,便会整除 ,矛盾。因此
第三步:除去阶中的其他因子。 取 。因为 ,由幂的阶公式,
第四步:合并各个互质阶。 取 。各阶为不同质数的幂,两两互质;模乘法可交换。反复使用第 14.2 节,每次累积阶仍与下一个阶互质,得到
所以 是原根。证毕。
“每个元素的阶都整除 ”本身不足以证明有人达到 。多项式根数上界负责提供元素,幂的阶公式负责提取质数幂,互质阶乘积引理负责拼成完整阶。
14.5 原根有多少个
取一个模 的原根 ,。全部非零剩余类可唯一表示为 ,。由幂的阶公式,
因此 是原根,当且仅当 ,共有 个。所以模 的原根数为 。 时用 ,结论仍成立。
| 模数 |
原根个数 |
全部原根代表 |
| 5 |
2 |
2、3 |
| 7 |
2 |
3、5 |
| 11 |
4 |
2、6、7、8 |
| 13 |
4 |
2、6、7、11 |
| 17 |
8 |
3、5、6、7、10、11、12、14 |
14.6 原根判定与合数反例
设 , 的不同质因子为 。则
是原根对全部
必要性:阶为 时不整除任何 。
充分性:令阶为 。若 ,商 有某个质因子 ,于是 ,推出相应幂等于 ,矛盾。 时没有需检验的质因子,非零条件已唯一确定原根。
例:模 时 。,,所以 为原根。
模 的互质代表 全部平方为 ,因此阶最多为 ,而 ;故没有原根。
一般分类是:在 的约定下,有原根的模数恰好为 ,其中 为奇质数,。此分类是拓展结论,本篇没有给出其完整证明;可参看 Yale 数论与密码学课程讲义。
第 15 章:补充证明:群、阶与欧拉函数计数
返回目录
第10章已经通过八格循环数出了一个、一个、两个、四个。这里把这个计数推广到任意循环长度,并补上“阶整除群阶”的证明。群是用来概括模乘法的语言;先读下面的模乘法例子,再读抽象定义。概率符号的严格定义也放在本章末尾,供回查。
15.1 从模乘法进入群的语言
前面已经证明的模逆元、幂的周期与原根,可以用群的语言统一表达。群是带一种运算的集合,运算满足:封闭、结合律、有单位元、每个元素有逆元。若运算还满足交换律,称为交换群。群的阶是元素个数,记为 ;它与某个元素的阶是两种不同的数量。
对 ,模 的互质剩余类组成
其运算为剩余类乘法。第 13.4 节保证乘积仍互质,所以运算封闭;整数乘法给出结合律与交换律; 是单位元;第 13.3 节保证每个元素有逆元,而且逆元也与 互质。因此 是有限交换群,。
对质数 , 就是全部非零剩余类,阶为 。第 14 章已经完整证明原根存在,所以某个 的幂遍历 。这就是说
是循环群。这里“循环”表示一个元素的幂生成整个群;它是比“每个元素的幂都有周期”更强的性质。
一般模数不保证循环: 有四个元素,却没有阶为四的元素,因而任何单个元素都无法生成全群。
15.2 有限群中的元素阶与循环子群
以下暂用 表示群单位元。对有限群中的元素 ,它的阶是满足 的最小正整数 。
先说明这个正整数一定存在。若 , 共 项,必有两项相同。设 、,乘以 得 。由良序原理可以取最小正指数。
与第 4.2 节同样作带余除法,可以证明对 ,
因此 两两不同,且任何非负整数幂都等于其中某一项。这个集合记为 。它包含单位元;两项乘积仍是一个幂; 的逆元为 ,经指数取余仍在集合中。因此 是 的子群,恰有 个元素。
在一般群中也可以使用整数次幂,负次幂由逆元定义;这里的计数只用非负代表。
15.3 陪集划分与拉格朗日定理的完整证明
设 是有限群 的子群。对 ,左陪集定义为
第一,每个陪集与 等大。 映射 是双射,逆映射为 ,故 。
第二,两个陪集相交就相同。 若 ,其中 ,则
记此元素为 ,有 。对子群内的 ,,所以 ;反用 得反向包含。故两个陪集完全相同。
第三,陪集覆盖全群。 每个 都属于 ,因为 。
综上,不同左陪集将 划分成若干互不重叠、每份恰有 个元素的集合。若有 个不同陪集,则
这就是拉格朗日定理。取 ,便得
证明没有使用交换律,适用于任意有限群。
整除条件不保证每个因数都实现为元素阶。 例如 的阶为 ,其元素阶分别为 ,没有阶为 的元素。后面按每个因数精确计数,依赖的是循环群这一额外条件。
15.4 循环群中的幂阶公式,包括零指数
设 ,,即 的阶为 。每个元素唯一写为 ,其中 。第 14.1 节的论证在群中原样成立:对 ,
若 ,写 、,。对正整数 ,
最后一步用 与互质消去律。因此最小正 为 。
若 , 的阶为 ,而 ,公式同样给出 。这一步补足了概率计数必须包含单位元的边界。
15.5 为什么阶为 d 的元素恰好有欧拉函数那么多个
设 ,令 。由刚才的公式,
右边要求 ,写 。由于 ,恰有 。并且
这个等式也可由第 13.9 节的质数指数逐项取最小值证明。因此
当 ,这样的 恰有 个,因为 不互质,统计范围与 等价;当 ,只有 ,且 ,也与 一致。每个 对应不同的 ,所以
若 ,由拉格朗日定理个数为 。由计数结果可见,在循环群中每个正因数确实都被实现。
取 ,各元素阶只能为 ,。其数量为
因为 时模 的互质代表恰为奇数,有一半。总数检查为 ;没有遗漏其他阶。这将直接变成第 11 章的概率分布。
15.6 原根存在性的另一条证明:所有阶的最小公倍数
新增对话给出另一种证明,可以与第 14.4 节的逐个质数幂构造对照。设 ,令
每个阶均整除 ,故 。另一方面,每个非零剩余类都满足 。多项式 因而至少有 个根;由第 14.3 节的根数上界,。于是 。
还需要说明有元素的阶恰好达到 。写 。由于是有限多个阶的最小公倍数,对于每个最大质数幂 ,存在某个 ,其阶为 ,且 。取 ,幂阶公式给出阶为 。这些阶两两互质,模乘法可交换,第 14.2 节给出 的阶为 。故 是原根。 单独取 即可。
这段“最小公倍数可以由一个元素的阶达到”的构造对有限交换群成立,不能去掉交换条件。例如三元素置换群 的元素由恒等、换位和三循环组成,阶分别为 ,最小公倍数为 ,却没有阶为 的元素。
15.7 样本空间、事件与随机变量
本篇只需要有限概率,不需要先学习连续分布或测度论。设有限样本空间 的每个结果 有概率 ,并满足 。事件是其中一个子集 ,其概率为 。互不相交事件的概率可以相加。
若所有结果等概率,称为均匀分布,此时
随机变量 是由结果决定的数或标签。事件 指所有满足这个条件的结果,因此
最后一个等式来自不同取值的事件将样本空间划分。并非任意一组概率的和都为 ;这里使用的是某个随机变量全部互斥取值的概率。
15.8 双射保持均匀,等大小原像也保持均匀
若 在有限集合 上均匀, 是一个映射,则对 ,
这直接由均匀计数得到。如果 是双射,每个原像恰有一个元素,输出在 上均匀。如果 是满射,而且每个原像恰有相同的 个元素,则 ,输出仍在 上均匀,概率为 。
输出均匀需要检验原像大小,不能仅因为输入均匀就断定。 例如均匀取 ,映射 取 的概率为 ,取 的概率为 。
对 均匀取自 ,映射 的每个原像为
恰有 项,故余数均匀。若 , 又是双射:相同像经互质消去律推出相同原像,有限同大小集合上的单射就是双射。两步合起来仍保持均匀。
15.9 条件概率、独立性与全概率公式
当 时,条件概率定义为
随机变量 独立,表示对其全部取值 ,
因此,在 时,。零概率条件事件不使用这个除法。
设 将样本空间划分成互不相交的事件,则 被 划分,所以
这就是有限全概率公式。等号的依据分别是事件划分和条件概率定义,并不需要先假设独立。
如果 独立,分别只依赖它们的 也独立。固定输出 ,将原像事件展开:
这里强调“分别”:若两个新变量都依赖同一个输入,不能自动断言独立。
第 16 章:补充:精确概率、统一指数与运行时间
返回目录
第11章的至少一半已经证明完了。这一章回答三个额外问题:实际概率是多少,指数条件能否再放宽,每轮计算需要多长时间。第一次理解加权上界时可以跳过这一章。
16.1 精确概率公式与最差情形
这里延续第10章的记号:,再写,其中为奇数,。下面算的是均匀选互质底数时的精确概率。
令 。两边有正概率的共同取值为 。代入分布,
失败
因此
成功
这些是互质均匀抽样下的精确概率,不依赖 中多出的奇因子或因子 :前者在指数子群中作排列,后者只延长序列已经为 的尾部。
|
|
失败概率 |
成功概率 |
| 1 |
1 |
|
|
| 2 |
1 |
|
|
| 2 |
2 |
|
|
| 3 |
3 |
|
|
| 2 |
4 |
|
|
若 ,失败概率为 ; 时为 ,以后严格减小。若两者不同,分母进一步乘以 ,失败概率更小。因此最低成功概率 确实在 达到。取 即为一个实例。
16.2 卡迈克尔函数:统一周期与单个元素周期
对 ,令 为互质剩余类。定义 为所有 都满足 的最小正整数 。
由第 4.2 节,一个 对全部元素可用,当且仅当它被每个元素的阶整除。因此
最右边整除来自每个阶均整除 ,所以其最小公倍数也整除。模 时阶分别为 ,故 。
对质数 ,原根的存在保证 。对两个不同质数 ,中国剩余定理把 对应到 ,并且一个幂等于 当且仅当两个坐标都等于 ,所以
充分性:该最小公倍数使两个坐标的幂都为 。必要性:由标准中国剩余定理可选互质元素,其模 坐标为原根、模 坐标为 ,所以任意统一指数必须被 整除;交换坐标又得 整除它,因而被两者最小公倍数整除。
三种指数的区别是:阶针对一个底数, 针对全部互质底数的最小统一指数, 是互质底数个数,同时提供一个统一指数。一般 的质数幂公式及全部结构不在本篇展开。
16.3 我们真正需要的是一个正的统一指数倍数
有效指数满足
这个条件与 RFC 8017 第 3.2 节 一致。令 ,则 。原对话使用更强的 ;本章的全部证明只需要较弱条件。
要求 。 正整数 可以保证这一点; 给出 ,无法把它写成后面所需的有限二次幂分解。它虽满足形式同余,却是公开的恒等幂运算,不能纳入这里的分解归约条件。
将 中所有因子 提取出来,得到唯一分解
为奇数
因为 为奇质数, 都为偶数,故 。对任何 ,费马小定理分别给出 模 与模 ,再由 CRT 合并得
算法知道的是 ,无需知道 或 的实际数值。
16.4 有限次失败与期望多项式时间
第 11 章已经证明互质底数的一次成功概率至少为 。在全部 中抽样时,非互质分支直接成功;条件于互质时仍然均匀。因此全部候选的一次成功概率也至少为 。
独立重复 次仍失败的概率至多为 。例如 ,上界为 。这不保证每个随机序列都成功。
无限重试的算法一旦输出就必正确,期望尝试次数至多为 ,称为 Las Vegas 型随机算法;限次版本可以在未找到因子时明确报告失败。不能把“报告失败”写成输出一个未经验证的因子。
复杂度按输入位数计算。反复除以 最多进行 次,快速幂需要 次模乘,连续平方最多 次;gcd 和整数运算均可在输入位数的多项式时间完成。期望总时间因此是 的多项式,而不是与巨大整数 的数值成正比。通常 RSA 指数代表小于 ,此时也可按 控制。
第 17 章:辨清几个计数问题,再用练习回查
返回目录
本章保留原对话问过的素数数量、质因子数量及欧拉函数的区别。解析数论的渐近公式只作拓展,不参加前面的RSA证明。练习先挑你刚读过的主题,解答用于核对步骤。
17.1 三种“个数”不要混淆
| 问题 |
记号 |
例子 |
| 不超过 的素数有多少个 |
|
:2、3、5、7、11 |
| 有多少种不同质因子 |
|
|
| 的质因子算重数后有多少个 |
|
|
| 代表范围内与 互质的整数有多少个 |
|
|
如果 ,则 、,并约定 。因每个质因子至少为 ,,所以
若有 个不同质因子,把它们排序后第 个不小于第 个质数,所以 至少是前 个质数的乘积。因此 时最多一种, 时最多两种, 时最多三种。这个上界讨论的是最大可能数量,不能当成给定整数的实际数量。
17.2 素数计数与渐近公式:只介绍拓展结论
素数定理为
表示两者比值趋于 ,不是精确相等;相对误差趋于 ,也不意味着绝对误差趋于 。对整数 ,“小于 ”的计数是 ,不是 。参看 Carl Pomerance 的数论讲义。
| 上限 |
不超过 的素数实际个数 |
(约) |
| 10 |
4 |
4.3 |
| 100 |
25 |
21.7 |
| 1000 |
168 |
144.8 |
| 10000 |
1229 |
1085.7 |
| 100000 |
9592 |
8685.9 |
| 1000000 |
78498 |
72382.4 |
接近大数 的整数“成为素数的密度约为 ”是一种启发式解释,不是证明。对数积分是更精细的经典近似;采用从 起积分的记号时,可写 。它与采用主值积分定义的 相差常数,记号应说明约定。
原对话还提到不同质因子数的最大值与平均值,其渐近量级分别是 与 。它们是关于一批整数的统计结论,不是计算 的精确公式。为把平均与正常数量分开,准确写成
Hardy–Ramanujan 定理的核心是“正常数量”:对每个固定 ,除占比趋于 的例外整数外, 接近 ,相对偏差小于 。平均值结论与正常数量结论相关,但不是同一个陈述;这一区别可参看 Carl Pomerance 关于数量阶的讲义。
以上解析数论结论不在本篇的证明范围内,也不参与 RSA 正确性证明。拓展资料可参看 数论笔记中的算术函数阶。
17.3 练习与解答
题 1。 求 模 的余数。
解:,。
题 2。 对任意整数 , 与 哪个必成立?
解:第二个。第一个还需 ,取 即得反例。
题 3。 解 。
解: 的逆元为 ,所以 。
题 4。 已知 ,求 的阶。
解:。直接检验 ,,。
题 5。 解 、。
解:公约数 整除余数差 ,有解。写 ,得到 ,所以 ,。
题 6。 对 ,消息 是否都能恢复?
解:是。第 7.3 节已覆盖任意消息,包括 与质因子倍数。加密余数分别为 ,相应解密余数也是它们本身。
题 7。 一个 阶循环群中,阶为 的元素分别有多少个?
解:分别为 ,总和为 ;其他正整数不整除 时个数为 。
题 8。 已知 模 的阶为 ,,求 。
解:指数对 取余为 ,幂的值仍模 ,所以 。
题 9。 两个独立随机变量的分布为 与 ,它们相等的概率是多少?为何仍可写上界 ?
解:按相同位置作乘积并求和得 。第二分布每项至多 ,以第一分布为权重,权重总和为 ,所以通用上界为 。上界不等于精确值。
题 10。 对 ,连续平方分解仍可用吗?
解:,不是 的倍数,但条件已足够。;取 得 ,照样提取 。互质底数成功概率仍为 。
题 11。 若 与 中因子 的次数分别为 ,互质均匀底数一次尝试的成功概率是多少?
解:,失败概率为 ,成功概率为 。
题 12。 单次失败概率为 ,独立重复 次仍全部失败的概率与期望尝试次数是多少?
解:分别为 与 。若不独立重选,这些式子未必成立。
第 18 章:从原问题回到笔记,以及怎样分享
返回目录
18.1 第一份对话的21轮
这里按原来的追问顺序提供回查入口。原对话中选择的文字与公式显示问题也保留为来源数据;对于未直接查看的截图,不声称已经读过图像。
18.2 第二份对话的11轮与一条补充
后来的加权概率解释是单独补充,没有把它算成分享对话中的第12轮。
| 轮次 |
原来的问题或关注点 |
在哪里接着读 |
| 1 |
与分解有关,为什么仍不能说破解必须先分解 |
第12章 |
| 2 |
已知有效私钥为什么能恢复因子 |
第8章 |
| 3 |
平方为1,为什么质数下只能是正负1 |
第8章、第13章 |
| 4 |
非平凡平方根为什么能用最大公约数分解 |
第8章 |
| 5 |
成功概率至少一半怎么证明 |
第9章到第11章 |
| 6 |
质数下的乘法群为什么循环 |
第5章、第14章 |
| 7 |
为什么编号和取幂后的结果仍均匀 |
第10章 |
| 8 |
为什么开始把指数对2的幂取模 |
第4章、第10章 |
| 9 |
怎样从均匀余数导出到达次数的概率 |
第10章 |
| 10 |
元素阶为什么整除群阶 |
第15章 |
| 11 |
阶为的元素为什么有个 |
第10章、第15章 |
| 补充 |
为什么求和后仍不超过一半 |
第11章 |
18.3 这次怎样改写,旧版怎样保留
第三版先用模7建立循环,用模55看分解和不同到达时间,再用模13解释均匀取幂。加权平均先用分堆与具体比例说明,最后才写求和。完整基础证明仍保留,但放在第13章之后按问题回查。
上一版的完整正文与检查材料保存在第二版HTML与第二版PDF所在目录。最早版本也保留:第一版HTML。
“欧拉函数”“欧拉定理”与复数里的欧拉公式是不同内容;后者在代数基本定理笔记中阅读。原根和模质数的多项式,可接到多项式与分圆域笔记和伽罗瓦理论笔记。
配套Markdown与阅读索引保留。HTML 的正文、样式、公式、公式源码查看及复制工具都嵌入单文件,可以离线阅读;PDF 保留正文、矢量公式、带页码目录和分层书签。跨笔记和原对话链接需要对应文件,分享整套时保留目录层级。