2012/8/2 18:07
孿生素數: 所謂孿生素數指的是間隔為 2 的相鄰素數,它們之間的距離已經近得不能再近了。
若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的兩側。
高效判斷乙個大於1的數是否為素數:
bool isprime(int num)
if (num % 6 != 1 && num % 6 != 5)
for (int i = 5; i*i <= num; i += 6) }
return true;
}
大素數高效演算法判斷
前段日子我也在做素數,下面是我的乙個總結,看到那個2秒搞定的,我還真想去看看 當數字小於1000000時,可以用簡單的判斷 int isprime int n 但當數值在1000000到100000000時 介紹一種方法 prime 為事先做好的素數表 如果需要判斷的數最大為100000000,則p...
判斷是否為素數的高效方法(Python)
演算法一 針對輸入的數字x,我們可以遍歷從2到x 1這個區間中的數,如果x能被這個區間中任意乙個數整除,那麼它就不是質數。def is prime1 x for i in range 2,x if num i 0 return false return true演算法二 對演算法一的優化,事實上只需...
判斷素數的方法(孿生素數)
素數 質數prime number 定義為在大於1的自然數中,除了1和它本身以外不再有其他因數,素數有無窮多個。先來一張 2 200素數分布表 從2到 n整除判斷 public static boolean isprime int num for int i 2 i sqrt num i retur...