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

2021-08-20 14:28:44 字數 944 閱讀 7281

如題,給定乙個範圍n,你需要處理m個某數字是否為質數的詢問(每個數字均在範圍1-n內)

輸入格式:

第一行包含兩個正整數n、m,分別表示查詢的範圍和查詢的個數。

接下來m行每行包含乙個不小於1且不大於n的整數,即詢問該數是否為質數。

輸出格式:

輸出包含m行,每行為yes或no,即依次為每乙個詢問的結果。

輸入樣例#1:

複製

100 523

49197

輸出樣例#1:

複製

yes

yesno

noyes

時空限制:500ms 128m

資料規模:

對於30%的資料:n<=10000,m<=10000

對於100%的資料:n<=10000000,m<=100000

樣例說明:

n=100,說明接下來的詢問數均不大於100且不小於1。

所以2、3、97為質數,4、91非質數。

故依次輸出yes、yes、no、no、yes。

#include using namespace std;

const int mn = 1e7 + 10;

const int mm = 1e5 + 10;

int n, m;

bool is[mn];

void aishishai() }}

int main()

return 0;

}

// 大於5 的素數 在6 左右 

#include using namespace std;

bool is(int t)

int main()

} return 0;

}

素數篩法(埃氏篩,線性篩)

時間複雜度o nloglogn void prime int b prime i 1則是合數 原理很簡單,所有合數可以表示為乙個質數跟另乙個數的積,列舉每個已知素數的倍數就能標記完。但很明顯,這樣做會有重複。比如12 3 4 2 6,在2這個素數進行倍數標記時會標記,在3這個素數進行倍數標記時同樣會...

素數篩 埃氏篩 線性篩 區間篩)

顧名思義,素數篩就是用來篩素數的。1.埃氏篩 o nloglogn 對於一般 不毒瘤 的素數題,埃氏篩就夠了 原理 任何合數都有小於自身的質因數 內容 對於每乙個素數將它的 2 i x i i全部標記為1,使得所有的合數全被標記 不足 合數會被標記素因數次,不夠高效 void prime int x...

埃氏篩 洛谷P3383埃氏篩模板

思路 如果我們要篩出 1,n 內的所有素數,使用 1,n 內的素數去篩就可以了 設bool型陣列 a,a i 表示 i 是否被某個素數篩過 從 2 開始列舉每個數 i 若 a i false,表示 i 沒有更小的素因子,從而知道 i 是素數。列舉 i 的所有倍數 j,令 a j 1 如下 inclu...