luoguP1865A%Bproblem
Posted zhouxuanbodl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luoguP1865A%Bproblem相关的知识,希望对你有一定的参考价值。
思路
使用筛表法筛除1~m的素数,然后累计1~m的素数个数,最后输出sum[r]-sum[l-1]即可。
代码
#include<iostream> using namespace std; int n,m,l,r,sum[1000010]; bool a[1000010]; int main(){ cin>>n>>m; for(int i=2;i*i<=m;i++){ if(!a[i]){ for(int j=i;j*i<=m;j++){ a[i*j]=true; } } } a[1]=true; for(int i=1;i<=m;i++){ if(!a[i]){ sum[i]=sum[i-1]+1; } else sum[i]=sum[i-1]; } for(int i=1;i<=n;i++){ cin>>l>>r; if(l<1||l>m||r<1||r>m){ cout<<"Crossing the line"<<endl; continue; } cout<<sum[r]-sum[l-1]<<endl; } return 0; }
以上是关于luoguP1865A%Bproblem的主要内容,如果未能解决你的问题,请参考以下文章