王德貴 丁大為
哥德巴赫猜想,是世界近代三大數(shù)學(xué)難題之一。華羅庚是中國(guó)最早從事哥德巴赫猜想的數(shù)學(xué)家。1936—1938年,他赴英留學(xué),師從哈代研究數(shù)論,并開始研究哥德巴赫猜想,驗(yàn)證了幾乎所有的偶數(shù)猜想。1966年,華羅庚的學(xué)生陳景潤(rùn)在對(duì)篩法做了新的重要改進(jìn)后,證明了“1+2”,他證明了任何一個(gè)充分大的偶數(shù),都可以表示為兩個(gè)數(shù)之和,其中一個(gè)是質(zhì)數(shù),另一個(gè)或?yàn)橘|(zhì)數(shù)或?yàn)閮蓚€(gè)質(zhì)數(shù)的乘積,被稱為“陳氏定理”,這在當(dāng)時(shí)影響很大,但之后就再也沒有什么研究進(jìn)展了。
哥德巴赫猜想,是數(shù)學(xué)史上和質(zhì)數(shù)有關(guān)的數(shù)學(xué)猜想,影響了一代又一代數(shù)學(xué)家。
1742年6月7日,德國(guó)數(shù)學(xué)家哥德巴赫在寫給著名數(shù)學(xué)家歐拉的一封信中,提出了一個(gè)大膽的猜想:任何不小于3的奇數(shù),都可以是三個(gè)質(zhì)數(shù)之和(如:7=2+2+3。當(dāng)時(shí)1仍屬于質(zhì)數(shù))。
同年,6月30日,歐拉在回信中提出了另一個(gè)版本的哥德巴赫猜想:任何偶數(shù),都可以是兩個(gè)質(zhì)數(shù)之和(如:4=2+2。當(dāng)時(shí)1仍屬于質(zhì)數(shù))。
這就是數(shù)學(xué)史上著名的“哥德巴赫猜想”。由于1已經(jīng)不歸為質(zhì)數(shù),所以這兩個(gè)猜想分別變?yōu)椋?/p>
任何不小于7的奇數(shù),都可以寫成三個(gè)質(zhì)數(shù)之和的形式;
任何不小于4的偶數(shù),都可以寫成兩個(gè)質(zhì)數(shù)之和的形式。
20世紀(jì),隨著計(jì)算機(jī)技術(shù)的發(fā)展,數(shù)學(xué)家們發(fā)現(xiàn)哥德巴赫猜想對(duì)于更大的數(shù)依然成立。但自然數(shù)是無(wú)限的,無(wú)法判斷是否存在某一個(gè)足夠大的偶數(shù),成為哥德巴赫猜想的反例,但數(shù)學(xué)家們?nèi)栽诓粩嗟奶剿髦校瑢で笾鞣N不同的解決方法。
如果想了解更深入的知識(shí),大家可以參考相關(guān)資料。今天我們只利用Python做基本驗(yàn)證。
在Python學(xué)習(xí)過程中,嘗試解決一些問題,特別是世界數(shù)學(xué)難題,不僅是一種樂趣,同時(shí)也能學(xué)到數(shù)學(xué)知識(shí),了解一些數(shù)學(xué)發(fā)展歷史,也可以提高學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)積極性,更能加深理解程序的優(yōu)化與調(diào)試。
“關(guān)于偶數(shù)的哥德巴赫猜想”,我們可以將要分析的任一正整數(shù)減去一個(gè)質(zhì)數(shù),然后看看結(jié)果是不是也為質(zhì)數(shù),這是一種方法;還有一種方法就是遍歷質(zhì)數(shù),看看有沒有符合條件的兩個(gè)質(zhì)數(shù)。
“關(guān)于奇數(shù)的哥德巴赫猜想”,我們可以將要分析的任一正整數(shù)減去一個(gè)質(zhì)數(shù),然后看看結(jié)果是不是也為質(zhì)數(shù),這是一種方法;還有一種方法就是遍歷質(zhì)數(shù),看看有沒有符合條件的三個(gè)質(zhì)數(shù)。
這幾種方法的基礎(chǔ)都需要把正整數(shù)范圍內(nèi)的質(zhì)數(shù)先求出來(lái)。我們用列表形式將質(zhì)數(shù)存儲(chǔ),計(jì)算和訪問很方便。
1.關(guān)于偶數(shù)的哥德巴赫猜想
任何不小于4的偶數(shù),都可以寫成兩個(gè)質(zhì)數(shù)之和的形式。
這個(gè)猜想的理解是,4=2+2,6=3+3,8=3+5,10=3+
7,12=5+7……有無(wú)數(shù)個(gè),我們無(wú)法一一列舉,通過編程也只能驗(yàn)證有限范圍,否則運(yùn)行時(shí)間將無(wú)限延長(zhǎng)。
(1)方法一:遍歷質(zhì)數(shù)列表,取出兩個(gè)質(zhì)數(shù)驗(yàn)證
程序有兩部分,一是建立質(zhì)數(shù)列表,二是在列表中確定有沒有滿足條件的質(zhì)數(shù)。有一組則程序結(jié)束,并顯示出來(lái)(圖1)。
也可以利用自定義函數(shù),程序如圖2。
要求出不小于這個(gè)偶數(shù)范圍內(nèi)的質(zhì)數(shù),于是把質(zhì)數(shù)獲取做了自定義函數(shù),利用列表把質(zhì)數(shù)列舉出來(lái),然后便于下一步計(jì)算和驗(yàn)證。
輸入不小于4的偶數(shù)后,調(diào)用自定義函數(shù),把這個(gè)范圍內(nèi)的質(zhì)數(shù)放在列表里,然后利用枚舉算法,在列表中取兩個(gè)數(shù),驗(yàn)證是否等于輸入的偶數(shù),如果等于偶數(shù),即輸出。
這兩個(gè)程序運(yùn)行結(jié)果是完全一樣的,它們都是在質(zhì)數(shù)列表里任意取兩個(gè)數(shù),驗(yàn)證其和是不是等于輸入的偶數(shù)。
(2)方法二:判斷偶數(shù)與質(zhì)數(shù)的差是否為質(zhì)數(shù)
這種方法減小了時(shí)間復(fù)雜度,運(yùn)行速度更快,程序如圖3。
測(cè)試結(jié)果如圖4。
2.關(guān)于奇數(shù)的哥德巴赫猜想
任何不小于7的奇數(shù),都可以寫成三個(gè)質(zhì)數(shù)之和的形式。
根據(jù)前面的驗(yàn)證,修改程序,便可以驗(yàn)證“關(guān)于奇數(shù)數(shù)的哥德巴赫猜想”。即多加一重for循環(huán),同時(shí)判斷輸入數(shù)與兩個(gè)質(zhì)數(shù)之差是否也為質(zhì)數(shù),如果是,則輸出算式,程序結(jié)束(圖5)。
驗(yàn)證結(jié)果如圖6。