素数之美

素数的定义

素数是在中小学课本里面就会出现的数学概念,它指的是只能够被 1 和它本身整除的正整数。在正整数中,2, 3, 5, 7, 11 等都是素数。同时,每一个正整数(不小于 2)都可以写成多个素数的乘积,例如 35 = 5 * 7, 10 = 2 * 5。从素数的定义可以看出,判断一个数是否是素数是需要通过“乘法”的。而在数学的研究历程中,数学家们同样也关心由素数之间的加法所产生的奇妙结论。

100以内素数表
100 以内的素数表

哥德巴赫猜想(Goldbach’s Conjecture)

随着徐迟的报告文学《哥德巴赫猜想》的问世,哥德巴赫猜想在国内早已家喻户晓。其中,哥德巴赫猜想包括两个部分:

  1. [Theorem] 每一个大于 7 的奇数都可以写成三个素数之和;
  2. [Conjecture] 每一个大于 6 的偶数都可以写成两个素数之和。
Goldbach_手稿_1
哥德巴赫的手稿

从猜想的陈述来看,如果第 2 部分是正确的,那么可以根据公式 n = (n-3) +3 直接得到第 1 部分是正确的,因此第 2 部分被称为强哥德巴赫猜想,第 1 部分被称为弱哥德巴赫猜想。其中哥德巴赫猜想的第 1 部分已经被彻底解决,而哥德巴赫猜想的第 2 部分目前最好的结果被称为陈氏定理( Chen’s Theorem)。用数学的语言来说,这两个定理的陈述分别是:

[Theorem (Vinogradov)] 假设 N 是一个奇数,令 r(N) = \sum_{p_{1}+p_{2}+p_{3}=N}1 表示关于 N 的计数函数,其中 p_{1}, p_{2}, p_{3} 都是素数。则存在一个一致有界的函数 \Omega(N) \in (c_{1},c_{2})c_{2}>c_{1}>0)对于充分大的奇数 N,有以下式子成立

r(N) = \Omega(N)\cdot \frac{N^{2}}{(\ln(N))^{3}}\cdot\bigg\{1+O\bigg(\frac{\ln\ln(N)}{\ln(N)}\bigg)\bigg\}.

备注:从以上公式可以看出,\lim_{N\rightarrow \infty} r(N) = +\infty. 换句话说,\exists N_{0}, \forall N\geq N_{0}, 弱哥德巴赫猜想成立。

[Theorem (Chen)] 假设 N 是一个偶数,令 r(N)=\sum_{p+n=N}1 表示关于 N 的计数函数,其中 p 是素数,n 表示最多为两个素数的乘积。则当 n 充分大的时候,有以下式子成立:

r(N) >> \Omega(N)\cdot \frac{2N}{(\ln(N))^{2}},

其中 \Omega(N) = \prod_{p>2} \bigg(1-\frac{1}{(p-1)^{2}}\bigg)\prod_{p|N, p>2}\frac{p-1}{p-2}.

备注:

  1. 在哥德巴赫猜想的研究过程中,通常数学家把偶数可表示为 a 个素数的乘积与 b 个素数的乘积之和这个问题,简称为 a + b 问题。所以,陈景润证明的 “1+2” 并不是指 1+2 = 3,而指的是对于每一个充分大的偶数,要么是两个素数之和,要么是一个素数加上两个素数之积。其实可以简单的理解为 p_{1}+p_{2} 或者 p_{1}+p_{2}\cdot p_{3},在这里 p_{1},p_{2},p_{3} 都是素数。从以上公式可以看出,\lim_{N\rightarrow \infty} r(N) = +\infty.
  2. 1920 年,挪威数学家 V.Brun 证明了 “9+9″,开启了数学家研究哥德巴赫猜想之路;1966 年,中国数学家陈景润证明了 “1+2″,把素数的筛法推向了顶峰。

孪生素数猜想(Twin Primes Conjecture)

在上千年的素数研究历程中,除了哥德巴赫猜想,孪生素数(Twin Primes)的研究也是数论中的一个重要课题。所谓孪生素数就是相差为 2 的两个素数,例如 (3,5), (5,7), (11,13),\cdots 等等。因此,就有人提出猜想:孪生素数有无穷多对。换句话说,如果用 p_{n} 表示第 n 个素数,那么孪生素数猜想就是 \liminf_{n\rightarrow +\infty}(p_{n+1}-p_{n})=2. 除了孪生素数本身之外,也有学者猜测,对于所有的正整数 k\geq 1, 形如 (p,p+2k) 的素数对同样有无穷多对。于是,在网上就有人对于有限的素数对进行了计算,让大家更好地看到素数之间的分布情况。

Twin_Prime_2
孪生素数及其推广

下面是部分关于素数间距(小间距,Small Gaps)的结论:

  1. 1940 年,Paul Erdos 证明 \exists c>0 使得 \liminf_{n\rightarrow\infty} \frac{p_{n+1}-p_{n}}{\ln(p_{n})}<c.
  2. 2005 年,Daniel Goldston,Janos Pintz 和 Cem Yildirim 证明 \liminf_{n\rightarrow\infty}\frac{p_{n+1}-p_{n}}{\ln(p_{n})}=0.
  3. 2007 年,上述结果被改进为 \liminf_{n\rightarrow\infty}\frac{p_{n+1}-p_{n}}{\sqrt{\ln(p_{n})}\cdot (\ln\ln(p_{n}))^{2}}=0.
  4. 2013 年,张益唐证明了 \liminf_{n\rightarrow\infty}(p_{n+1}-p_{n}) < 7 * 10^{7},随后这个结果被改进到 246。

除了素数之间的小间距之外,素数之间的大间距(Big Gaps)同样也有很多结论:

  1. 1931 年,Erik Westzynthius 证明 \limsup_{n\rightarrow\infty}\frac{p_{n+1}-p_{n}}{\ln(p_{n})} =\infty.
  2. 2014 年,Kevin Ford, Ben Green, Sergei Konyagin, Terence Tao 和 James Maynard 证明 p_{n+1}-p_{n}>c\cdot \frac{\ln(n)\cdot \ln\ln(n) \cdot \ln\ln\ln\ln(n)}{\ln\ln\ln(n)} 对于某个 c>0 和无穷个 n 成立。

素数定理

在研究素数的过程中,研究素数的分布规律就是这一切的关键所在。其中,素数定理则是描述素数分布的一个重要结论。类似的,关于孪生素数的分布也有一个上界的估计。

[素数定理] 假设 \pi(x) 表示不大于 x 的所有素数的个数,那么 \lim_{x\rightarrow \infty}\pi(x)/(x/\ln(x)) = 1.

[孪生素数个数的上界] 假设 \pi_{2}(x) 表示不大于 x 的所有孪生素数个数,那么存在常数 C>0 使得 \pi_{2}(x)\leq C\cdot x/(\ln(x))^{2}.

备注:从这两个定理可以粗糙地刻画出素数与孪生素数在实数轴的分布情况,并且可以看出孪生素数相对于素数则是少很多的。因为 \lim_{x\rightarrow+\infty}\pi_{2}(x)/\pi(x)=0.

prime_theorem
素数定理
Twin_Prime_Number_1
孪生素数的个数

素数的性质

在中小学的竞赛部分,大家总能够接触到一个关于素数的定理。

[Theorem (Euclid)] 素数有无穷多个。

证明:假设素数是有限个,不妨设为 p_{1},\cdots, p_{n},那么 N = \prod_{i=1}^{n}p_{i}+1 就是合数,但是它却不能被所有的素数 p_{1},\cdots,p_{n} 整除,所以导致矛盾。因此素数是无穷多个。证明完毕。

除此之外,在大学里面学习级数的时候,通常都会研究调和级数(Harmonic Series)的性质。所谓调和级数指的就是所有正整数的倒数和,形如:

S(x) = \sum_{1\leq n\leq x} \frac{1}{n}.

从定积分与级数的关系可以得到 \lim_{x\rightarrow +\infty}S(x) = +\infty 并且 S(x)  = \ln(x) + O(1). 也就是说,所有正整数的倒数和是发散的。

利用这种思路,其实可以分析所有素数的倒数和,也就是说 \sum_{p \text{ prime}} \frac{1}{p}. 通过欧拉公式可以得到:

\sum_{n=1}^{\infty}\frac{1}{n} = \prod_{p\text{ prime}}\bigg(1+\frac{1}{p}+\frac{1}{p^{2}}+\cdots\bigg)= \prod_{p\text{ prime}} \frac{1}{1-\frac{1}{p}},

两边取对数可以得到 \ln\bigg(\sum_{n=1}^{\infty}\frac{1}{n}\bigg) = \sum_{p\text{ prime}} -\ln\bigg(1-\frac{1}{p}\bigg),

由于 -\ln(1-x) = x + O(x^{2}),并且 \sum_{n=1}^{\infty}\frac{1}{n}=+\infty, \sum_{n=1}^{\infty}\frac{1}{n^{2}}=\frac{\pi^{2}}{6}, 可以得到

\ln\bigg(\sum_{n=1}^{\infty}\frac{1}{n} \bigg)= \sum_{p\text{ prime}}\frac{1}{p} + O\bigg(\sum_{p\text{ prime}}\frac{1}{p^{2}}\bigg).

等式的左边是发散的,右侧的第二项是收敛的,因此右侧的第一项(素数的倒数和)是发散的。进一步地,可以得到两个结论:

  1. \sum_{p\text{ prime}, p\leq x} \frac{1}{p} = \ln\ln(x) + O(1);
  2. \prod_{p\text{ prime}, p\leq x}\bigg(1-\frac{1}{p}\bigg)^{-1} = c\cdot\ln(x)+o(1), 这里,c>0 是一个常数。

至此,我们得到了两个级数的定理:

  1. [Theorem] 所有正整数的倒数和是发散的;
  2. [Theorem] 所有素数的倒数和是发散的。

从第 2 个结论同样可以得到素数是无穷多个。于是,就有数学家猜测如果孪生素数的倒数和是发散的,那么孪生素数同样也是无穷多对。但是在 1915 年,数学家 Brun 证明了,孪生素数的倒数和是收敛的,这个收敛的数字也被称为 Brun 常数。

[Theorem] 所有孪生素数的倒数和是收敛的。

证明:通过孪生素数个数的上界公式,可以得到存在 C>0 使得对于充分大的 x,有

\pi_{2}(x) \leq C\cdot \frac{x}{(\ln(x))^{2}}

成立。假设素数序列 p'_{1}, p_{2}',\cdots, p_{n}',\cdots 使得 p, p+2 都是素数,那么 n = \pi_{2}(p_{n}') \leq C\frac{p_{n}'}{(\ln(p_{n}'))^{2}}\leq C\frac{p_{n}'}{(\ln(n))^{2}},进一步可以得到

\frac{1}{p_{n}'} \leq C\frac{1}{n\cdot (\ln(n))^{2}}

对于充分大的 n 成立。而右侧是收敛的,i.e. \sum_{n=2}^{\infty} \frac{1}{n\cdot(\ln(n))^{2}}<+\infty. 因此,孪生素数的倒数和是收敛的。证明完毕。

备注:由于孪生素数的倒数和是收敛的,因此,通过孪生素数的倒数和来证明孪生素数有无穷多对这条路就被封死了。

在研究孪生素数的过程中,其目的是为了研究素数之间的间距究竟能有多小,也就是分析 \liminf_{n\rightarrow+\infty}(p_{n+1}-p_{n}) 的上界。同样的,也可以研究素数之间的间距究竟有多大,并且可以分析其量级大约是多少,此时就需要研究 \limsup_{n\rightarrow+\infty}(p_{n+1}-p_{n}).

[Theorem] 对于充分大的 x 而言,在 [1,x] 内,素数之间的最小间隔 \min_{p_{n}\leq x} (p_{n}-p_{n-1})\leq (1+o(1))\ln(x); 同时,素数之间的最大间隔 \max_{p_{n}\leq x}(p_{n}-p_{n-1})\geq (1+o(1))\ln(x).

证明:考虑区间 [1,x],通过素数定理可以得到在 [1,x] 区间内的素数大约是 \pi(x) \sim x/\ln(x) 个。于是把该区间 [1,x] 切割成长度为 \ln(x) 的子区间,区间的个数为 x/\ln(x), 通过鸽笼原理 (Pigeonhole Principle) 可以得到此定理的结论。

备注:除此之外,证明相邻素数的间隔没有上限还可以用构造法。考虑 n!+2, n!+3, \cdots, n!+nn 个连续的合数,所以两个相邻的素数必在 [n!+2, n!+n] 这个区间两侧。因此相邻素数的间隔没有上限,i.e. \limsup_{n\rightarrow+\infty}(p_{n+1}-p_{n})=+\infty.

Eratosthenes 筛法(Eratosthenes Sieve Method)

Eratosthenes 筛法是数学家 Eratosthenes 提出的一种筛选素数的方法,其思路比较简单:想要筛选出 [2,n] 中的所有素数,则首先把 [2,n] 中的所有正整数按照从小到大的顺序 2, \cdots, n 来排列,然后按照如下步骤执行:

  1. 读取数列中当前最小的数 2,然后把 2 的倍数全部删除;
  2. 读取数列中当前最小的数 3,然后把 3 的倍数全部删除;
  3. 读取数列中当前最小的数 5,然后把 5 的倍数全部删除;(4 已经被第一步去掉了)
  4. 读取数列中当前最小的数 7,然后把 7 的倍数全部删除;(6 已经被第一步去掉了)
  5. 循环以上步骤直到 [2,n] 中所有的数被读取或者被删除。
其算法复杂度为 O(n\ln(n))
埃拉托色尼筛选法
黄色的数为素数

Brun 筛法(Brun Sieve Method)

在数学界发展出各种筛法,其重要目的之一就是为了解决孪生素数猜想和哥德巴赫猜想。除了 Eratosthenes 筛法之外,数学家 V. Brun 也发现了一种筛法,后人称之为 Brun’s Sieve。其目的就是为了估计孪生素数的上界,进一步得到计算孪生素数的倒数和。其主要结论就是 \pi_{2}(x)\leq C\frac{x}{(\ln(x))^{2}}, 其中 C>0 是一个常数,并且 Brun 通过其筛法可以得到哥德巴赫猜想中的 “9+9″,在哥德巴赫猜想的发展中属于里程碑式的工作。

Question. 研究素数究竟有什么用?

Answer. 为了人类智慧的荣耀。

参考文献:

  1.  Small and Large Gaps Between Primes, Terence Tao, Latinos in the Mathematical Sciences Conference, 2015.
  2.  Bounded Gaps Beween Primes, Yitang Zhang, 2013.
  3.  Additive Number Theory, Melvyn B.Nathanson, GTM 164.
  4.  http://mathworld.wolfram.com/TwinPrimes.html.