34pts求助
查看原帖
34pts求助
1054686
XuOuXiao1024楼主2024/6/23 10:15
#include<bits/stdc++.h>
using namespace std;
const int BUFSIZE=1<<20;
char ibuf[BUFSIZE],*is=ibuf,*it=ibuf;
char getc(){
    if(is==it)
        it=(is=ibuf)+fread(ibuf,1,BUFSIZE,stdin);
    return is==it?EOF:*is++;
}
int reads(){
    int ret=0;
    bool sign=0;
    char ch=getc();
    while(!isdigit(ch)){
        sign|=ch=='-';
        ch=getc();
    }
    while(isdigit(ch)){
        ret=ret*10+ch-'0';
        ch=getc();
    }
    return sign?-ret:ret;
}
int n,m,l,r,isprime[1000005],prime[10000],cnt,p[1000005];
int main(){
    n=reads(),m=reads();
    memset(isprime,1,sizeof(isprime));
    isprime[0]=isprime[1]=0;
    for(int i=2;i<=m;i++){
        if(isprime[i]) prime[++cnt]=i;
        for(int j=1;j<=cnt;j++){
            if(i*prime[j]>n) break;
            isprime[i*prime[j]]=0;
            if(i%prime[j]==0) break;
        }
    }
    while(n--){
        l=reads(),r=reads();
        if(r>m || l<1) cout<<"Crossing the line\n";
        else{
            int ans=0;
            for(int i=l;i<=r;i++){
                if(isprime[i]) ans++;
            }
            cout<<ans<<"\n";
        }
    }
    return 0;
}

https://www.luogu.com.cn/record/162873513

2024/6/23 10:15
加载中...