洛谷P3383線性篩素數

2022-04-05 21:03:40 字數 769 閱讀 3534

**中體現在那個 $ break $

$ prime $ 陣列 中的素數是遞增的,當 $ i $ 能整除 $ prime[j ] $ ,那麼 $ iprime[j+1] $ 這個合數肯定被 $ prime[j] $ 乘以某個數篩掉。

因為i中含有 $ prime[j] $ , $ prime[j] $ 比 $ prime[j+1] $ 小。接下去的素數同理。所以不用篩下去了。

在滿足 $ i%prme[j]==0 $ 這個條件之前以及第一次滿足改條件時, $ prime[j] $ 必定是 $ prime[j]i $ 的最小因子

注意特判1就好了

#include #include #include #include #include #include #define re register

using namespace std;

const int maxn = 1e7 + 5;

inline int read()

while(ch >= '0' && ch <= '9')

return x * f;

}int n,m,x;

int mark[maxn],prime[maxn];

inline void prime(int n) }}

int main()

if(!mark[x]) printf("yes\n");

else printf("no\n");

} return 0;

}

洛谷 P3383 線性篩素數

洛谷 p3383 題目描述 如題,給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 資料範圍 對於100 的資料 n 10000000,m 100000 樣例輸入 100 5 2 3 4 91 97樣例輸出 yes yes no no yes include defin...

洛谷 P3383 模板 線性篩素數

題目大意 如題,給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 時空限制 500ms 128m 資料規模 對於30 的資料 n 10000,m 10000 對於100 的資料 n 10000000,m 100000 題解 數學方法 線性篩素數 很多人都是找到乙個素數,...

洛谷 P3383 模板 線性篩素數

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