求素數的方法很多,今天就來寫一種老師基本不會講的篩選法求100以內的素數(可任意改變想要求取的範圍)。
篩選法具體做法是:先把n個自然數按次序排列起來。1不是質數,也不是和數,要划去。第二個數2是質數留下來,而把2後面所有能被2整除的數都劃去。2後面第乙個沒劃去的數是3,把3留下,再把3後面所有能被3整除的數都劃去。3後面第乙個沒劃去的數是5,把5留下,再把5後面所有能被5整除的數都劃去。這樣一直做下去,就會把不超過n的全部合數都篩掉,留下的就是不超過n的全部質數。因為希臘人是把數寫在塗臘的板上,每要劃去乙個數,就在上面記以小點,尋求質數的工作完畢後,這許多小點就像乙個篩子,所以就把埃拉託斯尼的方法叫做「埃拉託斯特尼篩」,簡稱「篩法」。
# include
void main()
int j;
for(int i=2;i<10;i++)//進行篩選
} }
for(int i=0;i<100;i++)//輸出篩選後剩下的數(此時剩下的數為素數)
}}
篩選法求素數
題目 求100以內的所有素數。求素數的演算法常考,篩選法求素數不常見。定義長度為101的int陣列a 101 初始化為1。依次測試1到100的所有數字是否為素數。若i為合數,則a i 0。篩選完畢後,所有非0元素a i 所對應的數字i為素數。include using namespace std i...
篩選法求素數
篩選法求素數 質數 prime number 又稱素數。乙個 大於1的自然數 除了1和它本身外,不能被其他自然數 質數 整除,換句話說就是該數除了1和它本身以外不再有其他的因數 否則稱為合數 一 一般求素數的方法 乙個數n的因子不會超過n,但是如果我們知道數n的乙個因子a後,另乙個因子b b n a...
篩選法求素數
一 素數的定義 對於素數的定義,維基百科上給出如下一段話 素數指在大於1的自然數中,除了1和此整數自身外,無法被其他自然數整除的數。比1大但不是素數的數稱為合數。二 利用電腦程式,很容易就可以得到不太大的素數。以c語言為工具來描述常見的判斷素數的函式 int isprime int n 這個函式並不...