C C 查詢一定範圍內的素數(篩法)

2022-09-15 14:51:28 字數 486 閱讀 2588

本文**於:

由於乙個合數總是可以分解成若干個質數的乘積,那麼如果把質數(最初只知道2是質數)的倍數都去掉,那麼剩下的就是質數了。

例如要查詢100以內的質數,首先2是質數,把2的倍數去掉;此時3沒有被去掉,可認為是質數,所以把3的倍數去掉;再到5,再到7,7之後呢,因為8,9,10剛才都被去掉了,而100以內的任意合數肯定都有乙個因子小於10(100的開方),所以,去掉,2,3,5,7的倍數後剩下的都是質數了。

用程式可以這樣解決,引入布林型別陣列a[i],如果i是質數,a[i]=true,否則a[i]=false。那麼劃掉i可以表示成a[i]=false。

//找出n以內質數

void sieve(int n)

for (int i = 0; i <= n; i++)

,",i.tostring());

}}

如果去掉最後乙個用來顯示結果的迴圈的話,執行sieve(10000000)只要1秒多。

C C 查詢一定範圍內的素數(篩法)

本文 於 由於乙個合數總是可以分解成若干個質數的乘積,那麼如果把質數 最初只知道2是質數 的倍數都去掉,那麼剩下的就是質數了。例如要查詢100以內的質數,首先2是質數,把2的倍數去掉 此時3沒有被去掉,可認為是質數,所以把3的倍數去掉 再到5,再到7,7之後呢,因為8,9,10剛才都被去掉了,而10...

計算一定範圍內素數個數的演算法

問題 給定乙個大整數n,計算開區間 1,n 的素數有多少?include include include include include undef true define true 1 undef false define false 0 typedef int bool32 a不能整除小於等於根...

分頁查詢一定範圍內的SQL語句

查詢一定範圍內的資料 例如 查某段時間內的記錄 select from consumedetails where time between starttime and endtime consumedetails 表名 time 欄位名 starttime 開始時間 endtime 結束時間 查詢指...