你想成為百萬富翁嗎?實現這個夢想有幾種方法。二十年來,美國版的《誰想成為百萬富翁?》承諾,如果你能正確回答 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 個)素數的值。
事實上,有一個函式可以做到這一點。 不要驚慌——它看起來很複雜,但實際上是無害的
來源:Spektrum der Wissenschaft
讓我們稍微分解一下。 方括號 ⌊ 和 ⌋ 表示您應該向下舍入括號內的值。 因此,例如,⌊ 1.7 ⌋ = 1 且 ⌊ 1.12111167545 ⌋ = 1。
在這種情況下,方括號內的項似乎有點複雜。 為了更好地理解它,請檢視相應的圖表,該圖表繪製了該項,假設 i 的值為固定值,在本例中為 4,變數為 n
無論輸入值 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 的公式以獲得第四個素數,則會出現以下情況
來源:Spektrum der Wissenschaft
這不僅適用於 n = 4,而且適用於任何 n。 透過使用這個公式,您始終可以得到第 n 個素數。
但到目前為止,我隱瞞了一條資訊。 我們假設存在一個素數檢測器 f——但我沒有告訴你該函式是什麼樣的,或者它是如何工作的。
這是重大揭示。 它乍一看似乎也很令人生畏,但並沒有那麼複雜
來源: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,這正是我們想要的。
透過將迄今為止獲得的所有資訊放在一起,可以給出一個計算素數的實用公式
來源:Spektrum der Wissenschaft
請隨意自己嘗試。 如果你想計算第五個素數,你所要做的就是將 n = 5 代入公式,你將得到正確的結果 11。
事實上,這個方程早在 1964 年就由一位名叫 C. P. Willans 的人發表了。 關於 Willans 恆等式的詳細資訊仍然未知。 他沒有撰寫其他技術文章。 但我們可以假設 Willans 沒有透過這個公式成為百萬富翁。 不僅千禧年大獎當時還不存在,而且他的公式也無法回答任何與素數相關的主要數學問題。
如果您嘗試使用該方程,您可能已經注意到該方程的主要問題。 這些計算非常複雜。 即使是計算機也難以評估該公式,特別是對於較大的 n 值。 除此之外,階乘是問題的一部分:這些值很快變得非常大,並且計算需要大量的計算能力。
如果你想計算巨大的素數,你將使世界上每臺超級計算機都負擔過重。 因此,要成為百萬富翁,你需要找到另一條道路。 也許是時候參加遊戲節目了。
本文最初發表於Spektrum der Wissenschaft 並經許可轉載。
