Python編程算法【三十八】哥德巴赫猜想
【案例內(nèi)容】
2000以內(nèi)的不小于4的正偶數(shù)都能夠分解為兩個(gè)素?cái)?shù)之和(即驗(yàn)證歌德巴赫猜想對(duì)2000以內(nèi)的正偶數(shù)成立)。輸出正偶數(shù)能被分解成的素?cái)?shù)a和b。如果不止一組解,則輸出其中a最小的那組解。
【解題思路】
本題的解題思路是:先找出某個(gè)正偶數(shù)內(nèi)的所有素?cái)?shù),然后在這些素?cái)?shù)中,查找是否存在兩個(gè)素?cái)?shù)相加,會(huì)等于原的來(lái)這個(gè)正偶數(shù)。
為了將問(wèn)題細(xì)化,我們可以定義三個(gè)函數(shù)。第一個(gè)函數(shù)用來(lái)判斷一個(gè)數(shù)是否為素?cái)?shù);第二個(gè)函數(shù)用來(lái)找出某個(gè)數(shù)內(nèi)的所有素?cái)?shù),并將它們存入一個(gè)列表中;第三個(gè)函數(shù)用來(lái)遍歷循環(huán)該列表,看看該列表中,是否存在某兩個(gè)素?cái)?shù)相加會(huì)等于原來(lái)的數(shù)。最后,根據(jù)題意,用for循環(huán),
驗(yàn)證從4開始,到2000的正偶數(shù),是否都能分解為兩個(gè)素?cái)?shù)之和。如果每個(gè)正偶數(shù)都能找到兩個(gè)素?cái)?shù)相加之和等于它,就驗(yàn)證歌德巴赫猜想對(duì)2000以內(nèi)的正偶數(shù)成立。
【Python代碼】


由于2000數(shù)字較大,這里就列舉30以內(nèi)的正偶數(shù),經(jīng)程序運(yùn)行,都能分解成兩個(gè)素?cái)?shù)之和。實(shí)際上,從4-2000的正偶數(shù),都能分解成兩個(gè)素?cái)?shù)之和,而且有的正偶數(shù)還不止一組解,根據(jù)題意,只要找出第一個(gè)素?cái)?shù)最小的解即可,所以在計(jì)算兩素?cái)?shù)相加的函數(shù)里,從最小的素?cái)?shù)開始找,只要找到另一個(gè)素?cái)?shù)與之相加,能等于原來(lái)的正偶數(shù),就可以直接return返回。