你想成为百万富翁吗?实现这个梦想有几种方法。二十年来,美国版的《谁想成为百万富翁?》承诺,如果你能正确回答 15 个具有挑战性的问题,就能获得一百万美元的奖金。今天,你只需回答一个问题就可以赢得该奖项:素数在数轴上是如何分布的? 这样做,你将解决所谓的黎曼猜想,七个“千禧年难题”之一,其解决方案各奖励 100 万美元。
事实上,黎曼猜想并非唯一与素数相关的重要数学问题。 例如,哥德巴赫猜想指出,任何大于 2 的偶数都可以表示为两个素数之和(4 = 2 + 2,6 = 3 + 3,8 = 3 + 5,依此类推)。 解决这个猜想不会获得一百万美元或欧元的奖励,但会在数学界获得名誉和荣誉。 关于素数的谜题仍然存在如此之多,这似乎令人惊讶——毕竟,存在几种计算素数的公式。
其中一个“素数生成器”是 C. P. Willans 的第 n 个素数公式。 这个函数 p(n) 为任何 n 值吐出第 n 个素数。 例如,对于 n = 5,此公式返回 p(5) = 11,因为 11 是第五个素数。
支持科学新闻报道
如果您喜欢这篇文章,请考虑通过以下方式支持我们屡获殊荣的新闻报道: 订阅。 通过购买订阅,您正在帮助确保有关当今塑造我们世界的发现和想法的具有影响力的故事的未来。
该公式应该能够解决所有关于素数的谜团,对吧? 并非完全如此。
Willans 公式背后的想法是首先找到一个检测素数的函数——我们将其称为函数 f(x)。 如果检测器工作正常,则该函数每次检测到素数时都会给出 1(每当您输入等于素数值的数字或方程时)。 否则,该函数将给出 0,这意味着未检测到素数。
一旦你有了这个素数检测函数,你就可以将其转换为素数生成器。
从检测器构建生成器
假设您找到了素数检测器函数 f(x)。 借助它,您可以推断给定区间内素数的数量。 例如,如果您将值 f(1) + f(2) + f(3) + ... + f(10) 相加,结果将是 0 到 10 之间所有素数的数量——即 4。 (如果您好奇,该区间内的素数是 2、3、5 和 7)。
您可以仔细查看 f 上的各个被加数
f(1) = 0,
f(1) + f(2) = 1,
f(1) + f(2) + f(3) = 2,
f(1) + f(2) + f(3) + f(4) = 2,
f(1) + f(2) + f(3) + f(4) + f(5) = 3,
f(1) + f(2) + f(3) + f(4) + f(5) + f(6) = 3,
f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 4...
这里已经有一个模式。 如果你想确定第四个素数,例如,你必须找到最小的数 x,使得和 f(1) + f(2) + ... + f(x) = 4。 在上面的例子中,x = 7。
这个原理可以推广。 第 n 个素数是最小的自然数 x,使得 f(1) + f(2) + ... + f(x) = n。 所有这些意味着,如果您可以使用一个函数来表达这个过程,该函数将提供搜索到的值 x,您将创建一个素数生成器。
让我们一起做。 首先,引入另一个辅助函数 g(x) 对应于和 f(1) + ... + f(x) 是有帮助的。 因此
g(1) = f(1) = 0,
g(2) = f(1) + f(2) = 1,
g(3) = f(1) + f(2) + f(3) = 2,
g(4) = f(1) + f(2) + f(3) + f(4) = 2,
g(5) = f(1) + f(2) + f(3) + f(4) + f(5) = 3,
g(6) = f(1) + f(2) + f(3) + f(4) + f(5) + f(6) = 3,
g(7) = f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 4 ...
因此,回到搜索第四个(或更一般地说是第 n 个)素数,您将不得不计算有多少个 x 值使得 g(x) 小于 4(或 n)。 这样,您将获得您正在寻找的第四个(或第 n 个)素数的值。
事实上,有一个函数可以做到这一点。 不要惊慌——它看起来很复杂,但实际上是无害的
.png?w=900)
来源:Spektrum der Wissenschaft
让我们稍微分解一下。 方括号 ⌊ 和 ⌋ 表示您应该向下舍入括号内的值。 因此,例如,⌊ 1.7 ⌋ = 1 且 ⌊ 1.12111167545 ⌋ = 1。
在这种情况下,方括号内的项似乎有点复杂。 为了更好地理解它,请查看相应的图表,该图表绘制了该项,假设 i 的值为固定值,在本例中为 4,变量为 n
.png?w=900)
无论输入值 n 如何,该函数仅取 0 到 1.2 之间的值。 来源:Spektrum der Wissenschaft
您现在可以看到,无论 n 有多大或多小,方括号内的项
取值在 0 和 1 或 1 和 2 之间。 因此,使用周围的方括号,表达式返回 0 或 1。
事实上,只要 g(i) 小于 n,结果始终为 1。 另一方面,一旦 g(i) 等于 n 或超过 n,结果将为 0。 外部总和仅用于累加贡献。
因此,如果您评估 n = 4 的公式以获得第四个素数,则会出现以下情况
.png?w=900)
来源:Spektrum der Wissenschaft
这不仅适用于 n = 4,而且适用于任何 n。 通过使用这个公式,您始终可以得到第 n 个素数。
但到目前为止,我隐瞒了一条信息。 我们假设存在一个素数检测器 f——但我没有告诉你该函数是什么样的,或者它是如何工作的。
这是重大揭示。 它乍一看似乎也很令人生畏,但并没有那么复杂
.png?w=900)
来源:Spektrum der Wissenschaft
我们已经了解了方括号。 因为平方余弦仅返回 0 到 1 之间的值,这保证了 f(x) 只能是 0 或 1——这正是我们在检测器函数中想要的。 但是,对于哪些 x 值,f(x) = 0,对于哪些值,该函数等于 1?
要回答这个问题,必须考虑余弦函数的自变量:π x [(x-1)! + 1]⁄x。 感叹号表示一种称为阶乘的算术运算,它将所有自然数乘以阶乘之前的数字。 也就是说,5! = 1 x 2 x 3 x 4 x 5 = 120。
现在,如果您为 x 插入不同的值并评估分数 π x [(x-1)! + 1]⁄x,您将得到以下结果

来源:Spektrum der Wissenschaft
注意到模式了吗? 如果 x 是素数,则结果是 π 的整数倍; 否则就不是。 这对于所有 x 值都成立。
事实证明,这在历史上已被多次证明。 虽然它被称为威尔逊定理——以数学家约翰·威尔逊的名字命名,他在 18 世纪提出了这种联系作为猜想——但它也由约瑟夫-路易斯·拉格朗日在 1771 年证明。 但他远非第一个证明它的人。 事实上,阿拉伯学者阿布·阿里·哈桑·伊本·海赛姆在公元 1000 年左右提出了相应的猜想。
百万美元仍然无人认领
威尔逊定理可用于构建检测器:π 的整数倍的余弦始终产生 1 或 -1,而另一方面,余弦函数的所有其他自变量都产生小于 1 的结果。 这就完成了素数检测器。 通过舍入平方余弦函数(通过方括号),如果 x 是素数,f(x) 返回值 1,否则返回 0,这正是我们想要的。
通过将迄今为止获得的所有信息放在一起,可以给出一个计算素数的实用公式
.png?w=900)
来源:Spektrum der Wissenschaft
请随意自己尝试。 如果你想计算第五个素数,你所要做的就是将 n = 5 代入公式,你将得到正确的结果 11。
事实上,这个方程早在 1964 年就由一位名叫 C. P. Willans 的人发表了。 关于 Willans 恒等式的详细信息仍然未知。 他没有撰写其他技术文章。 但我们可以假设 Willans 没有通过这个公式成为百万富翁。 不仅千禧年大奖当时还不存在,而且他的公式也无法回答任何与素数相关的主要数学问题。
如果您尝试使用该方程,您可能已经注意到该方程的主要问题。 这些计算非常复杂。 即使是计算机也难以评估该公式,特别是对于较大的 n 值。 除此之外,阶乘是问题的一部分:这些值很快变得非常大,并且计算需要大量的计算能力。
如果你想计算巨大的素数,你将使世界上每台超级计算机都负担过重。 因此,要成为百万富翁,你需要找到另一条道路。 也许是时候参加游戏节目了。
本文最初发表于Spektrum der Wissenschaft 并经许可转载。