如何判斷素數

2022-01-12 23:01:13 字數 1028 閱讀 2766

為乙個不太懂程式設計的菜姬師姐解釋如何判斷素數。

題目:計算大於10000查起的第五個素數(原話,語句有歧義吧)

**:

#include#include

int flag(int x) ///

自定義判斷乙個數是不是素數的函式

return

1; ///

走完前面的語句都沒有找到除1之外的因子數

}int

main()

if(cnt==5) ///

找到第五個素數,列印輸出後跳出迴圈

}return0;

}

菜姬師姐表示不知道為什麼要對x開根號?int q=sqrt(x);取整;

判斷素數就是判斷有沒有可以被本身整除的因子,如果有,那兩個因子要麼是一大一小,要麼是兩個相同的數。以q為中點,小*大 和 大*小是同樣的因子。

舉例100,2*50,4*25,10*10,25*4,50*2;當i=2的時候,i可以被x整除,直接返回0;不是素數沒有太大影響。但素數就會有很大差別。

舉例97,97是素數,q=9;如果不開根號,那i會一直加到96,運算了96次。開根號後就只運算了9次。

假設97是合數的話,則97=小*大,在「小」的數裡面都找不到因子,在「大」的數裡面會找到因子嗎?顯然找不到。開根號就是對演算法的優化,使原來96次的運算變為9次。如果判斷的數是1000001,那就少運算了999000次。

其次就是取整問題,for語句2裡需要取等號,如果判斷的數是9,則p=3,當i=3的時候會return 0;如果判斷的數是11,p取整也等於3,當i=3的時候還是不能被11整除,自然不會return 0;慢慢走完迴圈出來的時候return 1,表示11是素數。

利用孿生素數判斷素數

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

判斷素數 Excel公式練習53 判斷素數

excelperfect 本次的練習是 在列a中給定乙個整數值,例如單元格a2,並且2 a2 100,要在列b中 例如單元格b2 使用公式進行判斷 如果列a中的值是素數,則返回 素數 如下圖1所示。圖1素數也稱質數,是指在大於1的自然數中,除了1和它本身外不再有其他因數的自然數。先不看答案,自已動手...

素數的判斷

所謂素數是指除了1和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被2 16的任一整數整除。因此判斷乙個整數m是否是素數,只需把m被2 m 1之間的每乙個整數去除,如果都不能被整除,那麼m就是乙個素數 另外判斷方法還可以簡化。m不必唄2 m 1之間的每乙個整數去除,只需被2 m之間...