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