算术与数论
素数定理
描述质数的密度在整数中如何近似按1/ln(n)逐渐稀疏。
直观质数究竟有多稀有?
在最初的十个整数中,有 4 个是质数——密度 40%。在最初的一百个中,只有 25 个是质数——25%。在最初的一百万个中,只有 78,498 个——不到 8%。质数永远不会枯竭(欧几里得约在公元前300年证明了这一点),但看得越远它们就越稀少。素数定理精确刻画了这一速度:在大数 x 附近质数的密度约为 1/logx。
1..60 上的埃拉托斯特尼筛法:数一数每行 10 个数中的绿色素数——1..10 中有 4 个,11..20 中有 4 个,随后为 2,2,3,2——直观展示素数密度按 1/lnx 逐渐稀疏。中学计数质数:函数 π(x)
定义: 素数计数函数
π(x) 表示满足 p≤x 的质数 p 的个数。例如 π(100)=25:不超过 100 的质数为 2,3,5,7,…,97。
π(x)=#{p≤x:p prime} 1792年,年仅十五岁的卡尔·弗里德里希·高斯通过手工研究质数表,猜测 π(x) 可由对数积分 li(x)=∫2xlogtdt 很好地近似,等价地,x 附近质数的密度表现得像 1/logx。精确的渐近陈述是:
π(x)∼logxx π(x) 与两种经典估计的比较| x | π(x) | x / ln x | li(x) |
|---|
| 10 | 4 | 4.3 | 6.8 |
| 100 | 25 | 21.7 | 30.1 |
| 1,000 | 168 | 144.8 | 177.6 |
| 10,000 | 1,229 | 1,085.7 | 1,246.1 |
大学一个初等界,以及完整定理
设 θ(x)=∑p≤xlogp。则对每个整数 n≥1 都有 θ(n)<(log4)n。
为什么成立?
在阿达马与德拉瓦莱·普桑1896年的解析证明之前,切比雪夫(1852年)已经仅用二项式系数初等地证明了质数个数被夹在 x/log x 的常数倍范围内。这个界是后来任何完整定理证明的关键初等要素,其核心二项式系数技巧正是埃尔德什著名的伯特兰假设初等证明背后所用的技巧。
证明
对 n 用强归纳法。基础情形 n=1,2 显然:θ(1)=0,θ(2)=log2<log4。
归纳步骤中,假设该界对所有小于 n 的正整数成立。若 n>2 为偶数,则 n 不是质数,对 n−1 用归纳假设得 θ(n)=θ(n−1)<(log4)(n−1)<(log4)n。
若 n=2m+1 为奇数,考虑系数 (m2m+1)=m!(m+1)!(2m+1)!。它在 (1+1)2m+1 二项展开的 22m+1 项中出现两次(一次为 (m2m+1),一次为 (m+12m+1),二者相等),故 2(m2m+1)≤22m+1,即 (m2m+1)≤4m。
每个满足 m+1<p≤2m+1 的质数 p 整除分子 (2m+1)!,但不整除 m! 或 (m+1)!(因为 p>m+1),故 p 整除 (m2m+1)。因此所有这样的质数之积整除 (m2m+1),得 ∏m+1<p≤2m+1p≤(m2m+1)≤4m,即 θ(2m+1)−θ(m+1)≤(log4)m。
对 m+1<n 用归纳假设得 θ(m+1)<(log4)(m+1)。相加得 θ(n)=θ(2m+1)<(log4)(m+1)+(log4)m=(log4)(2m+1)=(log4)n,归纳完成。
当 x→∞ 时,π(x)∼logxx;等价地 π(x)/li(x)→1。
为什么成立?
上面的切比雪夫界把 π(x) 夹在 x/log x 的常数倍范围内,但"渐近于"是一个强得多的断言:比值 π(x)/(x/log x) 必须恰好趋于1,而不仅仅是有界。把这一差距从"有界"缩小到"恰好为1",需要一个完全不同的想法——黎曼1859年的洞见,即质数的分布被编码在zeta函数 ζ(s) 的复零点之中。
证明
这个证明只是解析路径的逻辑框架,并非自足的推导——它需要课程更靠后才会引入的复分析(详情见黎曼zeta函数专题)。论证分三个阶段。
阶段1(归约到θ):一个常规的分部求和论证表明 π(x)∼x/logx 等价于 θ(x)∼x,其中 θ(x)=∑p≤xlogp 与上面切比雪夫界中的相同。
阶段2(用ζ编码θ):黎曼的显式公式把 θ(x)(更准确地说是相近的 ψ(x)=∑pk≤xlogp)几乎精确地用 ζ(s)=∑nn−s=∏p(1−p−s)−1 的零点表示出来:主项 x 来自 ζ 在 s=1 处的单极点,而 ζ 的每个零点 ρ=β+iγ 都贡献一个大小约为 xβ 的振荡误差项。
阶段3(关键的不消失事实):ψ(x)∼x——从而定理成立——当且仅当没有零点满足 β=1,即 ζ(1+it)=0 for all t∈R。阿达马与德拉瓦莱·普桑于1896年各自独立地证明了这一不消失性,方法是把一个初等三角不等式(3+4cosθ+cos2θ≥0)应用于 σ→1+ 时的 log∣ζ(σ)3ζ(σ+it)4ζ(σ+2it)∣:若 1+it 处有零点,该式会被迫趋于 −∞,而不等式不允许这种情况。纽曼1980年的证明把阶段3的后果压缩成一个简短的陶伯型论证,但逻辑骨架——1 处的极点、别处的零点、直线 Re(s)=1 上的不消失性——正是黎曼与阿达马所给出的。
大学实际应用与典型例题
素数定理并非纯理论:生成RSA密钥的密码软件,以及估计破解这些密钥有多难的密码分析人员,都直接依赖于了解在给定大小附近质数排列得有多密集。定理的密度估计 1/log(x) 告诉我们,平均而言,需要测试多少个随机奇数才能碰到一个质数。
例题: 需要多少次随机尝试才能找到一个512位RSA质数?
RSA密钥生成程序随机选取512位奇数(接近 N=2512)并逐一进行素性检验,直到找到质数为止。利用素数定理的密度估计,平均需要测试多少个奇数候选?
解答
由定理,N 附近所有整数中质数的密度约为 1/logN。限定为奇数会使该密度翻倍(2 之外偶数永不为质数),因此奇数候选中的密度约为 2/logN。
这里 logN=log(2512)=512log2≈512×0.6931≈354.9。因此密度约为 2/354.9≈0.00563,即在此量级附近约每 177 个奇数中有 1 个是质数。
若每个候选都是成功概率如上的独立伯努利试验,则首次成功前的期望试验次数为 1/p≈177。这正是实际RSA实现报告生成每个大质数大约需要几百次素性检验(配合快速筛法预先滤掉明显合数)的原因。
例题: 估计对半素数进行试除分解的开销
一位密码分析人员想大致了解,要用试除法分解一个困难的100位半素数 N(两个大致相等质数的乘积),检验到 N 为止的所有质数,需要检查多少个候选除数。利用素数定理估计这个质数个数。
解答
N 有 100 位,故 N≈10100,N≈1050。由素数定理,π(N)≈N/logN。
这里 logN=log(1050)=50log10≈50×2.3026≈115.1。故 π(N)≈1050/115.1≈8.7×1047。
这个天文数字般巨大的数目——远超任何计算机所能枚举,更不用说检验——正是试除法对实际密码学模数毫无用处的原因,也是RSA的安全性建立在分解因数在计算上不可行这一基础上(尽管这种困难性尚无证明)的原因;素数定理正是能让密码学家把"天文数字般巨大"量化而非仅凭直觉描述的工具。
π(x) ~ x/log x 精确地是什么意思?
在 x = 10,000 处,x/ln x 四舍五入到最近整数是多少(ln 10000 ≈ 9.210)?
阿达马与德拉瓦莱·普桑1896年对素数定理的证明都基于什么事实?
按照 N 附近奇数的密度估计 2/logN,2048位奇数中大约有多大比例是质数(log(22048)≈1419.8)?