|
沙发
楼主 |
发表于 2018-9-23 14:02:20
|
只看该作者
- #include<iostream>
- #define FOR(i,a,b) for(int i=a;i<=b;i++)
- #define ROF(i,a,b) for(int i=a;i>=b;i--)
- using namespace std;
- int prime[10000005],f[10000005],n,m,a,b,t,tot;
- bool num[10000005];
- void eural(int x)
- {
- f[1]=0;
- FOR(i,2,x)
- {
- if(!num[i])
- {
- prime[++tot]=i;
- f[i]=f[i-1]+1;
- }
- else
- f[i]=f[i-1];
- FOR(j,1,tot)
- {
- if(i*prime[j]>x)
- break;
- num[i*prime[j]]=1;
- if(i%prime[j]==0)
- break;
- }
- }
- }
- int main()
- {
- cin>>n>>m;
- eural(m);
- while(n--)
- {
- cin>>a>>b;
- if(a<1 || b>m)
- {
- cout<<"Crossing the line"<<endl;
- continue;
- }
- else
- {
- t=f[b]-f[a-1];
- cout<<t<<endl;
- }
- }
- return 0;
- }
复制代码 |
|