題目名稱是吸引你點進來的
實際上該題還是很水的
區間質數個數
輸入格式:
一行兩個整數 詢問次數n,範圍m
接下來n行,每行兩個整數 l,r 表示區間
輸出格式:
對於每次詢問輸出個數 t,如l或r∉[1,m]輸出 crossing the line
輸入樣例#1:複製
2 5輸出樣例#1:複製1 32 6
2【資料範圍和約定】crossing the line
對於20%的資料 1<=n<=10 1<=m<=10
對於100%的資料 1<=n<=1000 1<=m<=1000000 -10^9<=l<=r<=10^9 1<=t<=1000000
思路:考察的是素數篩法,**提供了兩種方法,一種是尤拉篩法,一種是埃氏篩法的改進。字首和陣列記錄結果效率會更高。
貼一篇素數篩的部落格,這裡不再贅述:
#include #include #include #include #include#define max 1000005
using namespace std;
int prime[max];
int vis[max];
int sum[max];
void prime()//尤拉篩
else
sum[i]=sum[i-1];
for(int j=0;j<=k&&i*prime[j]<=max;j++)
}}void iprime()//埃氏篩法改進
else
sum[i]=sum[i-1];
}for(int i=t+1;i<=max;i++)
}int main()
} return 0;
}
素數篩法(素數篩 線性篩)
求素數的方法在現階段可以總結為三種 這種方法最為簡單但效率太低,經過優化時間複雜度最低是o n sqrt n 輸入乙個n,輸出n以內所有素數 include intprime int n if flag 0 優化 printf d i intmain 素數篩法原理 2是素數,那麼2的所有倍數都是合數...
洛谷OJ P3383 模板 線性篩素數(素數篩)
思路 由於本題資料範圍較大,因此如果採用常規的素數判斷方法以及較常用的埃氏篩 複雜度o nloglogn 都是會被卡掉的,而出題人也是希望採用線性 尤拉 篩的方式解決這道題。由於是板子題,就不再放思路了,直接上 include include include include include incl...
洛谷 3383 模板 線性篩素數
問題描述 如題,給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 輸入 第一行包含兩個正整數n m,分別表示查詢的範圍和查詢的個數。接下來m行每行包含乙個不小於1且不大於n的整數,即詢問該數是否為質數。輸出 輸出包含m行,每行為yes或no,即依次為每乙個詢問的結果。樣...