關於最大素數

2021-06-28 05:28:39 字數 2106 閱讀 4849

這些天很無聊的了解了一下幾個數學題

由對王垠的40行**引發,先是研究了尾遞迴,後又由於王垠的文章《談p=np?》了解了一下當今數學的七大難題,於是又去查其中乙個龐加萊猜想的事情(龐加萊猜想已經解決,後有丘成桐事件),另外哥德**猜想的相關事情(陳景潤的1+2,非七大難題),最後又回到p/np問題(七大難題之一),結果不小心又無聊的去查了一下最大素數問題,更無聊的是還跟著去證明了一下。。。跟我的程式設計工作毫無關係嘛。。。我發現我的思維也太散了。。。

關於最大素數問題

不存在最大質數!

上小學的時候,我們就知道所有的自然數可以分為質數(素數)和合數兩類,當然還特別規定了「1既不是質數,也不是合 數」。100以內的質數,從小到大依次是:2、3、5、7、11、13、17、19、……、83、89、97。不用說了,你一定會背下來。那麼質數的個數 是不是有限多的呢?

在解決這個問題之前,我們先來看看另乙個問題:怎樣判斷乙個已知自然數是不是質數。比如,143是不是質數?

你一定會按照下面這個步驟去判斷: 先用最小的質數2去除143,不能整除;再用3去試試,還是不行;再依次用5、7試試,還是不行;11呢?行!143=11×13,所以143不是質數,而是合數。所以,判斷乙個數是不是

質數,只需用比這個數小的所有質數,依次去除它即可,如果都不能整除的話,這個數就一定是質數;相反,只要這個數能夠被某乙個質數整除,這個數就一定是

合數。這種方法所依據的原理是:每乙個

合數都可以表示成若干個

質數的乘積。不用說,這叫做「

分解質因數」,也是小學數學的知識。

我們先假設質數的個數是有限多的,那麼必然存在乙個「最大的質數」,設這個「最大的質數」為n。下面我們找出從1到n之間的所有質數,把它們連乘起來,就是:

2×3×5×7×11×13×……×n

把這個連乘積再加上1,得到乙個相當大的數m:

m=2×3×5×7×11×13×……×n+1

那麼這個m是質數還是合數呢? 乍一想,不難判斷,既然n是最大的質數,而且m>n,那麼m就應該是合數。既然m是

合數,就可以對m分解質因數。可是試一下就會發現,我們用從1到n之間的任何乙個

質數去除m,總是餘1!這個現實,又表明m一定是質數。

這個自相矛盾的結果,無非說明: 最大的質數是不存在的!如果有乙個足夠大的質數n,一定可以像上面那樣,找到乙個比n更大的質數m。既然不存在最大的質數,就可以推知

自然數中的質數應該有無限多個。

m=2×3×5×7×11×13×……×n+1,用從1到n之間的任何乙個

質數去除m,總是餘1!這個現實,又表明m一定是質數。此結論大錯特錯,例如,2×3×5×7×11×13+1=30031=59×509,30031是個合數。

看到這個反例,我開始懷疑以上證明的正確性,於是想了好久,終於想明白,該證明是正確的!

反例的錯誤點在於他沒有除比30031小的所有素數,僅除到13,而要證明乙個素是否素數必須要除比他小的所有素數均不能整除才可以證明該數是素數。

關於快速證明乙個數是否素數採用該數除以比他小的所有素數即可快速判斷而無需除比他小的所有數,這個很好證明!每乙個合數必然可以表示成若干素數的乘積,一樣很容易證明。這裡不贅述。

我們之所以對以上證明過程存在質疑,主要來自於該證明的結論是n如果是最大素數,那麼m還是素數。於是通過反例n=13,則m=30031,可30031是合數即m是合數,與上面的推論m是素數矛盾了!!這是怎麼回事呢?是否說明這個推論是錯誤的呢?經過思考我們發現,證明中認定m是素數的前提是首先我們得認定n是最大的素數!!才推出m還是素數,然後自相矛盾,即可反證n不是最大素數。而反例中的前提條件即出錯,n=13,顯然13不是最大素數他就不可能成為n。

我們先不考慮m和n誰比較大,按證明即先認定n為最大的素數,那麼可推出m必定為素數這個結論。最後發現m>n,故n就不是最大素數。

然後再來看反例:」m=2×3×5×7×11×13×……×n+1,用從1到n之間的任何乙個

質數去除m,總是餘1!這個現實,又表明m一定是質數。此結論大錯特錯,例如,2×3×5×7×11×13+1=30031=59×509,30031是個合數。「,其實m除以1到n總餘1表示m一定是素數這個結論並沒有錯,因為這個結論的前提條件是n是我們假定的最大素數成立的前提,而不是指任意素數,作者混淆概念,如例子將13=n,推出出30031為m,而m不是素數所以推翻結論,這前提條件就不正確了。

關於質數(素數)

素數的演算法 最基礎的演算法 n int input for i in range 2,n if n i 0 print n,可以被 i,整除 break else print n,是乙個質數 改進演算法,通過開方縮小整除範圍 n int input for i in range 2,int n 0...

習題 關於素數

1.判斷數n是否是素數 素數即質數,是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。反之則為合數。1既不是素數也不是合數。那麼根據定義,即可判斷乙個整數n是否為素數 bool isprime int n 這樣的時間複雜度為o n 我們考慮可不可以繼續化簡。考慮質數的性質 公理 合數...

技巧 關於素數

今天開始了一些複習 準備比賽 複習的過程中發現素數還是挺重要的,許多題目都能夠用到它。也想起了關於判斷素數的方法,下面跟大家介紹一下。首先這一種呢,應該是大家都會的吧 可以用函式做,呼叫起來方便一些。但是也不知道看我的部落格的童鞋知不知道函式 應該知道吧233 include include inc...