素數篩法打表

2021-07-12 06:04:57 字數 458 閱讀 4343

篩法打素數表是一種高效的打表方法,具體做法是:先把n個自然數按次序排列起來。1不是質數,也不是合數,要划去。第二個數2是質數留下來,而把2後面所有能被2整除的數都劃去。2後面第乙個沒劃去的數是3,把3留下,再把3後面所有能被3整除的數都劃去。3後面第乙個沒劃去的數是5,把5留下,再把5後面所有能被5整除的數都劃去。就這樣一直做下去,就會把不超過n的全部合數都篩掉,留下的就是不超過n的全部質數。需要注意的是,選取質數的時候,迴圈只需到sqrt(n)就可以。

#include#include#include#includeusing namespace std;

#define maxn 10000

int a[maxn],isprime[maxn];

int n;

void primetable()

}n=0;

for(i=1; i

素數打表 篩法

打表 是一種典型的用空間換時間的做法,一般指將所有可能需要用到的結果事先計算出來,這樣以後後面需要用到時就可以直接查表獲得。在什麼情況下我們需要打表?1 在程式中一次性計算出所有需要用到的結果,之後查詢直接取這些結果。舉個例子,假如我們算fibonacci數中的f n 我們假如需要算很多次q次 比如...

篩法素數打表方法

埃拉託斯特尼篩法,是一種西元前250年由古希臘數學家埃拉託斯特尼所提出的一種簡單檢定素數的演算法。給出要篩數值的範圍n,找出以內的素數。先用2去篩,即把2留下,把2的倍數剔除掉 再用下乙個質數,也就是3篩,把3留下,把3的倍數剔除掉 接下去用下乙個質數5篩,把5留下,把5的倍數剔除掉 不斷重複下去....

ACM 素數線性篩法(素數打表)

題目 include include int prime 700000 bool check 10000000 int num 1 int judge int y int j 0 while p j 1 j j i 0 while i j i j return1 int main int j 1 f...