一、概念介紹
素數又稱為質數。乙個大於1的自然數(從2開始),除了1和它本身外,不能被其他自然數整除的叫做素數,否則稱為合數。
0和1既不是素數也不是合數,最小的素數是2。
二、**
方法一:
bool is_prime(int num)
return true;
}注意:在for迴圈判斷時不能忘記 i <= sqrt(num) 的等號,因為假設 p*p = n ,jocigi n的因子是可以取到 sqrt(n) 的,如判斷 9 是不是素數,如果沒有等號會出現 9是素數,而實際上 9不是素數。
方法二:
關於質數分布的規律:大於等於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+2,6x+3,6x+4,由於2(3x+1),3(2x+1),2(3x+2),所以它們一定不是素數,再除去6x本身,顯然,素數要出現只可能出現在6x的相鄰兩側。因此在5到sqrt(n)中每6個數只判斷2個,時間複雜度o(sqrt(n)/3)。
在高配版和尊享版中,都是乙個剪枝的思想,高配版中裁剪了不必要的偶數,尊享版中裁剪了不和6的倍數相鄰的數,雖然都沒有降低時間複雜度的階數,但都一定程度上加快了判斷的速度。
/*一種高效的方法*/
bool isprime_3(int num)
//排除所有,剩餘的是質數
return true;
}三、測試
對負數與0,1進行異常處理
int main()
while(num >= 2 && num != -1)
}}四、截圖
C語言判斷乙個數是否為素數
素數又稱質數。所謂素數是指除了1和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被2 16的任一整數整除。思路1 因此判斷乙個整數m是否是素數,只需把m被 2 m 1 之間的每乙個整數去除,如果都不能被整除,那麼m就是乙個素數。思路2 另外判斷方法還可以簡化。m不必被 2 m 1 ...
判斷乙個數是否為素數
判斷乙個數n是否是素數,只需要判斷它是否能被2到n之間的數整除就行了,若不能被整除,則說明是素數。考慮到某數大於n 2時,n不可能被該數整除,故只需遍歷2 n 2即可。更進一步,由合數定理可知,若乙個數是合數,則它的最小質因數必小於等於該數的平方根,由此可得更為高效的 如下 include incl...
判斷素數 Python判斷乙個數是否為素數
素數的定義 乙個數如果只能被1和自身整除,則該數為素數。如果用程式設計的思維思考,則是說,如果乙個數被比它小的數 1除外 整除後餘數為0,則說明這個數可以被其他數整除,則該數為合數,否則該數為質數。python 如下 注釋 range 的起始值應該設為2,如果起始值設為1,則會第一次列印說該數是合數...