判斷素數問題

2021-09-28 11:02:56 字數 510 閱讀 1820

素數又稱質數。所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。

思路1):因此判斷乙個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每乙個整數去除,如果都不能被整除,那麼 m 就是乙個素數。

思路2):另外判斷方法還可以簡化。m 不必被 2 ~ m-1 之間的每乙個整數去除,只需被 2 ~ 之間的每乙個整數去除就可以了。如果 m 不能被 2 ~ 間任一整數整除,m 必定是素數。例如判別 17 是是否為素數,只需使 17 被 2~4 之間的每乙個整數去除,由於都不能整除,可以判定 17 是素數。

原因:因為如果 m 能被 2 ~ m-1 之間任一整數整除,其二個因子必定有乙個小於或等於 ,另乙個大於或等於 。例如 16 能被 2、4、8 整除,16=28,2 小於 4,8 大於 4,16=44,4=√16,因此只需判定在 2~4 之間有無因子即可。

思路一**

#include int main()

素數判斷問題

判斷素數還是很簡單的,兩種寫法 bool isprime int n return true for迴圈裡面必須帶等號,必須帶.這種是帶了開根號,也可以不開根號,for迴圈裡面那就是 1 for int i 2 i i n i n在10 9以內是安全的.有了上面的判斷素數的方法,似乎遍歷素數也很容易...

判斷素數類問題彙總

注 暫時先記錄這些問題,後期再持續更新 int i,m printf enter a number scanf d m for i 2 i m 2 i if m i 0 break 若m能被某個i整除,則m不是素數,提前結束迴圈 if i m 2 m 1 若迴圈正常結束,說明m不能被任何乙個i整除 ...

利用孿生素數判斷素數

思路參見 孿生素數 所謂孿生素數指的是間隔為 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...