利用孿生素數判斷素數

2021-07-11 17:42:38 字數 1139 閱讀 1027

思路參見:

孿生素數: 所謂孿生素數指的是間隔為 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和3的最小公倍數即6的倍數!

n≥6且n-1和n+1為孿生素數,那麼n一定是6的倍數

證明:

∵ n-1和n+1是素數 ┈┈┈┈┈ ①

∴ n-1和n+1是奇數

∴ n是偶數,即n是2的倍數 ┈┈┈┈┈ ②

假設n不是3的倍數,得:

n=3x+1 或 n=3x+2,

如果n=3x+1,則n-1=3x,與①違背,故n≠3x+1;

如果n=3x+2,則n+1=3(x+1),與①違背,故n≠3x+2;

∴假設不成立,即n是3的倍數,又有②得結論:

n是6的倍數。

由上面的規律可以推出下面結論:

若x≧1且n=6x-1或n=6x+1不是素數,那麼n一定不是2和3的倍數。

證明:

∵n=6x-1或n=6x+1,即n=2(3x)-1或n=2(3x)+1或n=3(2x)-1或n=3(2x)+1。

∴n一定不是2和3的倍數。

素數出現規律:

當n≧5時,如果n為素數,那麼n mod 6 = 1 或 n mod 6 = 5,即n一定出現在6x(x≥1)兩側。

證明:

當x≥1時,有如下表示方法:

6x,6x+1,6x+2,6x+3,6x+4,6x+5,6(x+1),6(x+1)+1
不在6x兩側的數為6x+2,6x+3,6x+4,即2(3x+1),3(2x+1),2(3x+2),它們一定不是素數,所以素數一定出現在6x的兩側。

判斷**如下:

bool isprime(int num)

僅代表個人觀點,歡迎交流**,勿噴~~~

判斷素數的方法(孿生素數)

素數 質數prime number 定義為在大於1的自然數中,除了1和它本身以外不再有其他因數,素數有無窮多個。先來一張 2 200素數分布表 從2到 n整除判斷 public static boolean isprime int num for int i 2 i sqrt num i retur...

python100以內孿生素數 孿生素數

問題描述 若兩個素數之差為2,則這兩個素數就是孿生素數。編寫程式找出1 100之間的所有孿生素數。我的 import math def prime n count 0 for i in range 2,int math.sqrt n 1 if n i 0 count 1 i 1 if count 1...

孿生素數問題

描述 寫乙個程式,找出給出素數範圍內的所有孿生素數的組數。一般來說,孿生素數就是指兩個素數距離為2,近的不能再近的相鄰素數。有些童鞋一看到題就開始寫程式,不仔細看題,咱們為了遏制一下讀題不認真仔細的童鞋,規定,兩個素數相鄰為1的也成為孿生素數。輸入 第一行給出n 0輸出 每組測試資料輸出佔一行,該行...