王德貴
每個(gè)可表示為 4n + 1 形式的素?cái)?shù),只能用一種兩數(shù)平方和的形式來(lái)表達(dá)。
17世紀(jì)偉大的法國(guó)數(shù)學(xué)家費(fèi)馬(1601 – 1665 年)雖然于 1660 年就發(fā)現(xiàn)了這一著名的定理,然而直到 1670 年,才在費(fèi)馬的兒子編輯的丟番圖(Diophantus,古希臘數(shù)學(xué)家)的《算術(shù)》中以附注的形式發(fā)表。不過(guò)書(shū)中不能肯定費(fèi)馬是否已經(jīng)得出證明。直到一百年后,才由歐拉發(fā)表了這一定理的證明,他為了解決這個(gè)問(wèn)題辛苦研究多年才寫(xiě)出了論文“費(fèi)馬定理的證明,形為 4n + 1 素?cái)?shù)可以表示為兩數(shù)平方之和”。
今天我們就用Python來(lái)簡(jiǎn)單地驗(yàn)證一下費(fèi)馬—?dú)W拉定理。
費(fèi)馬—?dú)W拉定理,也稱(chēng)費(fèi)馬—?dú)W拉素?cái)?shù)定理,現(xiàn)在已經(jīng)有了多種證法。證明方法要涉及數(shù)論問(wèn)題,在此不作過(guò)多論述,有興趣的老師和同學(xué)可以查閱相關(guān)資料。
今天我們只用Python做簡(jiǎn)單驗(yàn)證。
數(shù)論,是純粹數(shù)學(xué)的分支之一,主要研究整數(shù)的性質(zhì)。歷史上的數(shù)學(xué)家做了很多相關(guān)研究,提出了很多有趣的問(wèn)題,到了現(xiàn)在有的已經(jīng)證明,有的仍然是世界級(jí)的難題,尚未被證明。我們?cè)趯W(xué)習(xí)編程的過(guò)程中通過(guò)對(duì)數(shù)論難題的驗(yàn)證,能提高我們對(duì)Python、圖形化或APPInventor的掌握,也能在鞏固編程知識(shí)的同時(shí)加強(qiáng)等級(jí)考試相關(guān)知識(shí)點(diǎn)的掌握。
我們驗(yàn)證在一定范圍內(nèi)的所有4n + 1 形式的素?cái)?shù),是不是都可以表示為兩數(shù)平方和的形式。
首先我們利用自定義函數(shù)確定在這個(gè)范圍內(nèi)的所有素?cái)?shù),再篩選出所有4n + 1 形式的素?cái)?shù),然后利用枚舉算法一一驗(yàn)證每個(gè)素?cái)?shù),是不是可以表示為兩數(shù)的平方和,如果可以,就輸出。
然后修改程序,根據(jù)兩數(shù)的和是否相同來(lái)去重。
程序涉及等級(jí)考試四級(jí)內(nèi)容,自定義函數(shù)、枚舉、集合等相關(guān)知識(shí)。
兩次循環(huán)加判斷輸出在一定范圍內(nèi)所有4n + 1 形式的素?cái)?shù)(圖1)。
根據(jù)篩選出來(lái)的素?cái)?shù),先把所有滿足條件的兩數(shù)都輸出(圖2)。
比如先測(cè)試在100范圍內(nèi)的素?cái)?shù)情況。結(jié)果如下,大家可以看到,兩數(shù)有重復(fù),但每個(gè)4n + 1 形式的素?cái)?shù)都是一組值(圖3)。
我們利用兩數(shù)和去重,是因?yàn)椴浑y推出兩數(shù)平方和相同,這兩個(gè)數(shù)的和一定不相等(圖4)。
輸出結(jié)果如下,可以看到,每個(gè)4n + 1 形式的素?cái)?shù)都是一組值(圖5)。
我們可以測(cè)試更大范圍的值。1000范圍內(nèi),4n + 1 形式的素?cái)?shù)共有80個(gè)(圖6)。
定理的驗(yàn)證也可以用自定義函數(shù),只需涉及等級(jí)考試二級(jí)內(nèi)容,還可以利用集合去重。有興趣的老師和同學(xué)可以自己研究一下。
這個(gè)程序在執(zhí)行中,先輸出所有質(zhì)數(shù),再篩選4n+1 形式的素?cái)?shù),所以我們?cè)趫?zhí)行程序時(shí),也可以想到另一個(gè)方法,就是在4倍范圍內(nèi)判斷。
即是在1-n范圍內(nèi)循環(huán),求得4n+1的值,如果它是素?cái)?shù),那就輸出滿足條件的兩數(shù),同時(shí)去重。程序如圖7:
可以看到輸出結(jié)果與前面相同(圖8)。
其實(shí)費(fèi)馬-歐拉素?cái)?shù)定理還涉及到很多相關(guān)數(shù)論問(wèn)題,本文不作過(guò)多介紹。文章是我學(xué)習(xí)過(guò)程的心得,如有不當(dāng)之處,請(qǐng)各位同仁、朋友斧正。
NULL與0有著扯不斷理還亂的關(guān)系,其實(shí)也不那么高深。
1.對(duì)象的內(nèi)容不同
0表示對(duì)象的內(nèi)容確定為0。
NULL表示對(duì)象的內(nèi)容為空,即對(duì)象的內(nèi)容是空白的。
空值表示對(duì)象的內(nèi)容無(wú)法確定。
2.對(duì)象的值不同
0表示對(duì)象的值等于0。
NULL表示對(duì)象計(jì)算中具有保留的值,用于指示指針不引用有效對(duì)象。
空值表示值未知,空值一般表示數(shù)據(jù)未知、不適用或?qū)⒃谝院筇砑訑?shù)據(jù)。
總的來(lái)說(shuō),0本身有著一些原生的特性,諸如:起始、沒(méi)有、正負(fù)的分界線,0/1中的0還可以表示否定。NULL在數(shù)據(jù)庫(kù)中表示不知道的數(shù)據(jù),主要有3種意思:知道數(shù)據(jù)存在,但不知道具體值;不知道數(shù)據(jù)是否存在;數(shù)據(jù)不存在。