国产亚洲精品拍拍拍拍拍,精品无码AV无码免费专区,高清一区二区三区日本久

素數質數是什么意思(素數都有哪些)

admin 5 2022-12-17 17:54:00

素數質數是什么意思(素數都有哪些)

[ 路丁導讀 ] 本文主要闡述素數的概念,以通俗易懂的方式形象的描述素數和合數究竟代表什么意思,以及找到一種方法能夠求得給定的數值范圍內的素數。

二、文章大綱

1,素數的概念

2,素數的形象的理解

3,什么是合數

4,為什么1不是素數

5,如何求給定范圍內的素數

6,一個Python求素數的例子

素數又稱質數,英文名稱是Prime number。

三、文章內容

1,素數的概念

關于素數,也叫質數,從字面意思可以想象,這種數有著基本,本質,原子的意思,也就是說,這種數是不能夠再拆分的,是一個基本的,獨立的原子個體。素數的定義是指在除了1和此整數本身外,不能被其他自然數整除的數(1除外)。

2,素數的形象的理解

可以想象,有一堆蘋果,n個。假設蘋果是不可切割的,現在需要你去給這堆蘋果等份分給若干人。

有兩種可能的結果,一種是可以再分成若干等份;一種是不能夠再分了,蘋果保存原樣的一堆。

針對第二種情況(保持原樣,不能再分),這堆蘋果可以看成下面兩種情形:

A,以單個蘋果為一個個體,可以分成n個人,1(個)*n(人)

B,以n個蘋果為一個整體,可以分給1個人,n(個)*1(人);

回到數的范疇,也就是說,如果一個整數n,只能被1或者自己整除,也就是說整數n只能表示為n=1*n,或者n=n*1的形式,即不能分成其他形式的等份了,那么這個數就叫做素數。

形象的理解為:一堆蘋果,還是原來的那堆蘋果,沒有改變。

3,什么是合數

接著上面素數的概念,相反的情況,如果一堆蘋果可以再分成n=a*b的形式(a,b不等于1或者n),那么就稱n為合數。合數這個詞,本身也代表了本身是可以由幾個數合在一起的意思。

也以蘋果為例,假設這堆蘋果是15個,除了本身15這種狀態之外,也可以分成3個一堆,共5堆(3*5)或者5個一堆,共3堆(5*3)這兩種狀態。即15不單單只能表示為15*1或者1*15,還可以表示成3*5或者5*3。也就是說,15除了被1和自己整除外,還可以被3或者5整除。

4,為什么1不是素數

其實,如果從本質的概念來說,1也可以稱為素數,這個從上面的例子就可以看出。

之所以現在不能將1看成素數,原因在于,如果將1看成素數了,那么會使得合數的概念不統一。

合數,從上面第3點的分析,可以知道,合數n可以表示為n=a*b的形式(這里的a,b不等于1或者n)。

既然n=a*b,那么a,b有兩種狀態,要么是素數,要么是合數。why?

因為,數本身就只有這兩種狀態:要么只能被1或者本身整除,要么除此之外還能被其他數整除。因此,a,b這兩個數可能是素數,可能是合數。

現在,我想對a,b做如下操作:如果是素數,則保持不變;如果是合數,那么繼續分解為兩個數的乘積的形式。

這樣,一直持續操作下去,n=a*b,最終會以n=p1*p2*p3...的形式呈現(其中,p1,p2,p3...都是素數)。即一個合數,最終都會以素數的乘積表示。

現在回到本題的疑問,為什么1不是素數?

因為:1由于本身的特殊性(任意個1相乘還是1),導致一個合數n=p1*p2*p3,會有無數個表示式。即合數n,可以表示為:

n=p1*p2*p3

n=p1*p2*p3*1

n=p1*p2*p3*1*1

n=p1*p2*p3*1*1*1

......

所以,為了達到合數的表達式的唯一性,就人為的將1排除在了素數之外。

5,如何求給定范圍內的素數

到這里,已經知道了素數和合數。那么如果想要求某個給定的數范圍內的素數有哪些,應該怎么求。

比如,如何求10以內的素數?

根據常識,可以容易的想到10以內的素數有:2,3,5,7

如果不是10,而是100以內的素數呢?

難道是依次的去數,2,3,5,7,11,13,17,19...

如果不是100,而是1000以內的素數呢?

看來人為的靠自己的理解去數,會把自己數暈,不是解決問題的根本方法。

那么應該怎么去解決?

我認為,還是得從素數的概念入手:只能被1和自己本身整除的數。

也就是說,除了1和本身,不能被其他數整除的數。或者說,只要找到了一個能夠被1和本身之外的數整除,那么就可以判定這個數就不是素數。

下面的目標,就是努力去找到這樣的數。

先想一下不是素數的數是什么數?答案很明顯,就是合數。合數有什么性質?合數可以表示為若干個素數的乘積。

既然是要求n以內的素數,那么肯定n以內的素數一定是在n以內;n以內的合數也是在n以內。n以內的合數可以表示為若干個素數的乘積,這里的素數也肯定是在n以內。

那么可以確定的知道n以內的某個合數必會至少能夠被n以內的一個素數整除。如果能夠找到這樣的能夠被n以內的合數整除的最大的素數K,那么就可以得到這樣一組素數集(從2開始,最大值是K),將n以內的整數,依次與這組素數中的素數進行求余運算,根據求余結果是否是0,來判斷整數是否是合數。即求余的結果不是0的整數就是素數了。

下面的問題是:已知整數范圍n,如何求得能夠被n以內的合數整除的最大的素數?

還是從合數的概念出發,一個合數必然可以表示為若干個素數的乘積。

至于合數分解成的素數的個數多少,這個就不確定了,可能是2個,也可能是3個,或者更多。

下面先給出一個結論:

假設一個合數M可以分解為3個素數的乘積,M=X1*X2*X3(X1<=X2<=X3),那么對M進行開3次方根,得到的結果取整數為I,I必然介于M的素數的中間,即I>=X1且I<=X3。以整數I內的素數構成一個素數集合G,那么G中必然存在素數X1;合數M越大,那么得到的I就越大,因而構成的素數集合G中的最大的素數也越大。設想,要使得找到最大的素數,那么必然要找到最大的I。在合數M最大的情況下,開方根次數越小,則此時找到的I才是最大的。那么開方次數最小是多少呢?顯然就是開2次方根時(雖然開1次方根時,I最大,但此時的M就不是合數,而是素數了)。

那么,現在知道了,如何求一個給定的整數范圍內的素數方法了:

首先,對給定的整數,求平方根,得到I1(取整數);然后,找到I1范圍內的所有的素數,構成一個集合G接著,依次將給定的整數范圍內的整數,對集合G的素數,依次取模,若結果是0,那么說明這個整數是合數,則排除之;否則就是素數,保留;以上收集的素數就是給定的整數范圍內的所有的素數。

6,一個Python求素數的例子

根據上面討論的方法,現在用Python實現一個程序來求給定的整數范圍內的素數。

Python實現的代碼(求給定整數范圍內的素數)

驗證結果:

上一篇:國產運動品牌排行榜前十名:安踏特步上榜2025年排名前十名榜單出爐
下一篇:歡迎奕沃常識使用Z-BlogPHP!
相關文章