题目编号:1865
用到的思想,一维前缀和,埃式素数筛
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include<string> #include<cstring> #include<algorithm> #include<cstdlib> #include<iostream> using namespace std; bool prime[1000005]; int prefixsum[1000005]; int main(){ ios::sync_with_stdio(false); int n,m; cin>>n>>m; memset(prime,true,sizeof(prime)); prime[1]=false; for(int i=2;i<=m;i++){ if(!prime[i])continue; for(int j=2;i*j<=m;j++){ prime[i*j]=false; } } for(int i=1;i<=m;i++){ prefixsum[i]=prefixsum[i-1]+prime[i]; } for(int i=1;i<=n;i++){ int l,r; cin>>l>>r; if(l<1||r>m){ cout<<"Crossing the line"<<endl; continue; } cout<<prefixsum[r]-prefixsum[l-1]<<endl; } } |