判斷乙個數是不是質數 素數 ,3種方式介紹

2021-09-13 20:11:38 字數 817 閱讀 2367

質數又稱素數。乙個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。

0和1既不是質數也不是合數,最小的質數是2

二、方法介紹

1.最直觀,但效率最低的寫法

public static boolean isprime(int n)

for(int i = 2; i < n; i++)

}return true;

}這裡特殊處理了一下小於等於3的數,因為小於等於3的自然數只有2和3是質數。

然後,我們只需要從2開始,一直到小於其自身,依次判斷能否被n整除即可,能夠整除則不是質數,否則是質數。

2.初步優化

假如n是合數,必然存在非1的兩個約數p1和p2,其中p1<=sqrt(n),p2>=sqrt(n)。由此我們可以改進上述方法優化迴圈次數。如下:

public static boolean isprime(int n)

int sqrt = (int)math.sqrt(n);

for (int i = 2; i <= sqrt; i++)

}return true;

}3.繼續優化

我們繼續分析,其實質數還有乙個特點,就是它總是等於 6x-1 或者 6x+1,其中 x 是大於等於1的自然數。

如何論證這個結論呢,其實不難。首先 6x 肯定不是質數,因為它能被 6 整除;其次 6x+2 肯定也不是質數,因為它還能被2整除;依次類推,6x+3 肯定能被 3 整除;6x+4 肯定能被 2 整除。那麼,就只有 6x+1 和 6x+5 (即等同於6x-1) 可能是質數了。所以迴圈的步長可以設為 6,然後每次只判斷 6 兩側的數即可。

判斷乙個數是不是質數 素數 ,3種方式介紹

本文參考博文判斷乙個數是不是質數 素數 3種方式介紹,原文章解釋的已經很詳細,本問增加部分博主自己的理解。質數 質數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。特別的0,1不是質數。bool isprime int n for int i 2 i直接從2遍歷到n 1,判斷是否存...

python中判斷乙個數是不是質數

首先說明,內容結合了其他人的程式設計想法 和其他學習平台學習的思路,本人只是將解法記錄下來方便自己之後查閱。由於本人學藝不精,如果有錯誤還請大家見諒並指出,謝謝。質數是除了1和它本身再無其他的因數,例如5。在數學上與質數相對的是合數。其中1既不是質數也不是合數。num int input if nu...

檢查乙個數是不是質數

1 num int input 請輸入乙個自然數 2 nums 3for i in range 1,num 4for j in range 1,num 6if num in nums 78 print 不是質數 format num 9 10else 11print 是質數 format num 函...