埃氏篩 洛谷P3383埃氏篩模板

2022-05-29 04:18:13 字數 683 閱讀 7804

思路:

如果我們要篩出 [1, n] 內的所有素數,使用 [1, √n] 內的素數去篩就可以了

設bool型陣列 a,a[i] 表示 i 是否被某個素數篩過

從 2 開始列舉每個數 i:

若 a[i] = false,表示 i 沒有更小的素因子,從而知道 i 是素數。列舉 i 的所有倍數 j,令 a[j] = 1

**如下:

#include#include

using

namespace

std;

intn,m;

bool a[10050000

];int

main()

intj;

for(int i=1;i<=m;++i)

}

然後附上線性篩【畢竟是線性複雜度2333】

**

#include#include

using

namespace

std;

int n,m,num,su[10050000

];bool a[10050000

];int

main()

}intj;

for(int i=1;i<=m;++i)

}

埃氏篩法 線性篩素數 洛谷P3383

如題,給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 輸入格式 第一行包含兩個正整數n m,分別表示查詢的範圍和查詢的個數。接下來m行每行包含乙個不小於1且不大於n的整數,即詢問該數是否為質數。輸出格式 輸出包含m行,每行為yes或no,即依次為每乙個詢問的結果。輸入...

質數篩 埃氏篩

我們來看這麼一道問題 給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 n 10000000,m 100000 首先很容易聯想到使用列舉法來確定題目的整體框架 for i 1 m else 關鍵在於質數判斷部分。質數的判斷問題我們可以從定義出發。質數,又稱素數,是除了1...

埃氏篩法 素數篩

埃式篩法 給定乙個正整數n n 10 6 問n以內有多少個素數?做法 做法其實很簡單,首先將2到n範圍內的整數寫下來,其中2是最小的素數。將表中所有的2的倍數劃去,表中剩下的最小的數字就是3,他不能被更小的數整除,所以3是素數。再將表中所有的3的倍數劃去 以此類推,如果表中剩餘的最小的數是m,那麼m...