快速判斷素數

2021-08-15 14:51:45 字數 488 閱讀 2534

首先看乙個關於質數分布的規律:大於等於5的質數一定和6的倍數相鄰。例如5和7,11和13,17和19等等;

證明:令x≥1,將大於等於5的自然數表示如下:

······ 6x-1,6x,6x+1,6x+2,6x+3,6x+4,6x+5,6(x+1),6(x+1)+1 ······

可以看到,不在6的倍數兩側,即6x兩側的數為6x+2,6x+3,6x+4,由於2(3x+1),3(2x+1),2(3x+2),所以它們一定不是素數,再除去6x本身,顯然,素數要出現只可能出現在6x的相鄰兩側。這裡有個題外話,關於孿生素數,有興趣的道友可以再另行了解一下,由於與我們主題無關,暫且跳過。這裡要注意的一點是,在6的倍數相鄰兩側並不是一定就是質數。

根據以上規律,判斷質數可以6個為單元快進,即將方法(2)迴圈中i++步長加大為6,加快判斷速度,**如下:

bool isprime_3( int num )

一萬規模的資料僅需要1ms。

素數的快速判斷方法

大於等於5的素數與6的倍數相鄰 所有自然數可以用集合a 表示,其中n 0,顯然,子集b 內的元素都不是素數,所以只有6n 1和6n 5可能是素數,素數一定可以用6n 1和6n 5其中的乙個形式表示,即大於等於5的素數與6的倍數相鄰 上面說到大於或等於5的素數一定可以用6n 1或者6n 5來表示,在判...

利用孿生素數判斷素數

思路參見 孿生素數 所謂孿生素數指的是間隔為 2 的相鄰素數。大於6以上的孿生素數,p 1和p 1為素數,則p 1和p 1一定為奇數,則p一定為偶數,即p為2的倍數 p 1 p p 1為連續的自然數,他們一定有乙個是3的倍數,p 1和p 1為素數,則他們不為3的倍數,即p也為3的倍數 所以p一定為2...

判斷素數 Excel公式練習53 判斷素數

excelperfect 本次的練習是 在列a中給定乙個整數值,例如單元格a2,並且2 a2 100,要在列b中 例如單元格b2 使用公式進行判斷 如果列a中的值是素數,則返回 素數 如下圖1所示。圖1素數也稱質數,是指在大於1的自然數中,除了1和它本身外不再有其他因數的自然數。先不看答案,自已動手...