梅森素数 (Mersenne prime) 是人类目前已知的最大的一类素数. 它是指形如 `M_p = 2^p - 1` 的素数. 若 `p = a b`, 则 `2^(a b) - 1` 可以因式分解. 因此 `2^p - 1` 是素数的前提条件是 `p` 为一素数. 前几个梅森素数的 `p` 值是 2, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127... 晚年的 Euler 在双目失明的情况下通过心算验证 `M_31 = 2147483647` 为素数.
完全数 (perfect number) 是指满足方程 `sigma(n) = 2n` 的正整数. 其中 `sigma(n)` 表示 `n` 的所有正因子之和. 前几个完全数是 6, 28, 496, 8128, 33550336... 它们正好是偶数. 奇完全数是否存在仍是一个未解之谜.
梅森素数与偶完全数的一一对应 若 `M_p` 为梅森素数, 则 `M_p(M_p+1)//2` 是完全数. 反之, 偶完全数必然具有这种形式.
设 `p` 为奇素数, 则 `2^p - 1` 的所有因子都形如 `2n p+1`, `n` 是正整数.
由于两个形如 `2n p + 1` 的数相乘, 结果仍为同一形式, 我们只需对素数作出证明. 令 `q` 是 `2^p - 1` 的素因子, 则 `q` 是奇素数. 由费马小定理, `q | 2^(q-1) - 1`. 利用公式 `gcd(2^a - 1, 2^b - 1) = 2^(gcd(a,b)) - 1`, 我们有 `2^(gcd(p, q-1)) - 1` `ge q gt 1`, 即 `gcd(p, q-1) gt 1`, 即 `p | q-1`. 又 `q-1` 是偶数, 所以存在正整数 `n` 使得 `q = 2n p + 1`.
Lucas-Lehmer 算法 用于验证 `M_p` 是否为梅森素数. 设 `p` 是素数, `M_p = 2^p - 1`. 令 `r_1 = 4`, `r_n = (r_(n-1)^2 - 2) mod M_p`, (取最小非负剩余) 则 `M_p` 是素数当且仅当 `r_(p-1) = 0`.
关于素数分布的一个重要结论是素数定理: `pi(x) ~ "li"(x) ~ x/(ln x)`, `quad x to oo`. 其中 `pi(x)` 是 `x` 以内 (即 `le x`) 的素数个数, 而 `"li"(x) = int_0^x dt/(ln t)` `= lim_(epsi to 0^+) int_0^(1-epsi) + int_(1+epsi)^x`. 它的证明比较复杂, 我们只证较弱的结论 `pi(x) = Theta(x/(ln x))`. 换言之, `x` 充分大时, 存在正的常数 `c_1, c_2` 使 `c_1 x/(ln x) le pi(x) le c_2 x/(ln x)`. 此即著名的 Чебышев 不等式.
由素数定理推出 `p_n ~ n ln n`, `p_n` 是第 `n` 个素数.
[来自 zz] 由 `pi(x) ~ x/(ln x)` 取对数得 `ln pi(x) = ln x - ln ln x + o(1)`. 于是 `p_n/(n ln n)` `= p_n/(pi(p_n) ln pi(p_n)` `= (ln p_n)/(ln p_n - ln ln p_n + o(1))` `to 1`.
用 Eratosthenes 筛法求 100 以内的素数个数.
`sqrt 100 = 10`, 而 10 以内的素数为 2, 3, 5, 7. 对于 `10 lt n le 100`, 只要 `n` 与 2, 3, 5, 7 互素, 就能保证为素数. 而对于 `n le 10`, 只有 1 与 2, 3, 5, 7 互素. 换言之, 100 以内与 2, 3, 5, 7, 互素的整数个数为 `pi(100) - pi(10) + 1`. 记 `P = 2 * 3 * 5 * 7`, 称为一个筛子. `A = {1, cdots, 100}` 是待筛的整数. 定义筛函数为 `S(A, P) = sum_(a in A, (a,P) = 1) 1`, 表示通过了筛选的整数个数. 于是 `S(A, P) = pi(100) - pi(10) + 1`. 又记 `A_d` 为 `A` 中所有 `d` 的倍数, 则 `|A_d| = |__100/d__|`. 由容斥原理, `S(A, P)` `= |A| - |A_2| - |A_3| - |A_5| - |A_7|` `+ |A_(2*3)| + |A_(2*5)| + |A_(2*7)| + |A_(3*5)| + |A_(3*7)| + |A_(5*7)|` `- |A_(2*3*5)| - |A_(2*3*7)| - |A_(2*5*7)| - |A_(3*5*7)|` `+ |A_(2*3*5*7)|` `= 100 - 50 - 33 - 20 - 14 + 16 + 10 + 7 + 6 + 4 + 2` `- 3 - 2 - 1 - 0 + 0` `= 22`. 因此 `pi(100) = S(A, P) + pi(10) - 1 = 22 + 4 - 1 = 25`.
设 `A` 为有限个整数的集合, `A_d` 为 `A` 中所有 `d` 的倍数. 筛子 `P` 为一个正整数, 且 `P` 的所有素因子为 `p_1, cdots, p_s`. 那么 `S(A, P) := sum_(a in A, (a,P) = 1) 1` `= sum_(r=0)^s (-1)^r sum_(i_1 lt cdots lt i_r) |A_(p_(i_1) cdots p_(i_r))|`. 使用 Möbius 函数 `mu(n) = { 1, if n = 1; (-1)^r, if n = p_1 cdots p_r 为不同素数的乘积; 0, if n 含有平方因子 :}` 结论简记为 `S(A, P) = sum_(d | P) mu(d) |A_d|`. 特别当 `A = {1, cdots, n}`, `P = n` 时, 得到 Euler 函数的表达式 `varphi(n) = sum_(d | n) mu(d) n//d` `= n prod_(p | n) sum_(p^a | n) mu(p^a)//p^a` `= n prod_(p | n) (1 - 1//p)`.
利用公式 `sum_(d | P) mu(d) = { 1, if P = 1; 0, if P gt 1 :}` 有 `sum_(a in A, (a,P) = 1) 1` `= sum_(a in A) sum_(d | (a,P)) mu(d)` `= sum_(d | P) mu(d) sum_(a in A, d | a) 1` `= sum_(d | P) mu(d) |A_d|`.
Чебышев 不等式
记 `pi(x)` 是不超过 `x` 的素数个数, `p_n` 为第 `n` 个素数. 我们有
`color(#663)(1/3 ln 2)x/(ln x)`
`lt pi(x)`
`lt color(#663)(6 ln 2)x/(ln x)`, `quad AA x ge 2`
`color(#663)(1/(6 ln 2)) n ln n`
`lt p_n`
`lt color(#663)(8/(ln 2)) n ln n`, `quad AA n ge 2`.
Mangoldt 函数的和函数是对数函数: `sum_(d | n) Lambda(d) = ln n`.
设 `p` 在 `n` 中的次数为 `a_p`, 利用算术基本定理, 左边等于 `sum_(p^a | n) ln p` `= a_p sum_(p | n) ln p` `= ln(prod_(p | n) p^(a_p))` `= ln n`.
`x ge 1` 时, `sum_(n le x) psi(x // n) = ln(|__x__|!)`.
由定义, 左边等于 `sum_(n le x) sum_(k le x//n) Lambda(k)` `= sum_(n le x) sum_(n k le x) Lambda(k)` `==^(n k = m) sum_(m le x) sum_(n | m) Lambda(m/n)` `= sum_(m le x) ln m` 等于右边.