题解 | 质数统计

质数统计

https://www.nowcoder.com/practice/d832b0c1a0bd4394a3229f06c6f0b50b

#include <cstring>
#include <iostream>
#include <vector>
#define N 1000001
using namespace std;

bool p[N];
int a[N];

int main() {
    memset(p, true, sizeof(p));
    p[0]=p[1]=false;
    int t, n, x, l, r;
    for(int i=2;i<=1000;i++){       //埃拉托斯特尼筛素数法
        if(p[i]){
            x=i*i;
            while(x<=N){
                p[x]=false;
                x+=i;           
            }     
        }
    }

    a[2]=1;
    for(int i=3;i<=N;i++){          //使用前缀和,方便区间查询
        if(p[i]) a[i]=a[i-1]+1;
        else a[i]=a[i-1];
    }
    
    cin>>t;
    while(t--){
        cin>>l>>r;
        cout<<a[r]-a[--l]<<endl;
    }
    return 0;
}

全部评论

相关推荐

01-30 10:21
中北大学 golang
27届学院本誓死冲击...:技术栈不用搞这么详细,主要还是看实习和项目,毕竟技术栈就那点,你能写这么多,别人也可以写这么多,模版换一下换成上下的,不知道怎么排版可以去看看别人怎么写
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务