题解 | 质数统计

质数统计

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

素数筛+前缀和

#include <iostream>
#include<vector>
using namespace std;
const int MAX=1e6;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    vector<bool>isprime(MAX+1,true);
    isprime[0]=isprime[1]=false;
    for(int i=2;i*i<=MAX;i++){
        if(isprime[i]){
            for(int j=i*i;j<=MAX;j+=i)isprime[j]=false;
        }
    }
    vector<int>prefix(MAX+1,0);
    for(int i=1;i<=MAX;i++){
        prefix[i]=prefix[i-1]+isprime[i];
    }
    int n;
    cin>>n;
    while(n--){
        int l,r;
        cin>>l>>r;
        cout<<prefix[r]-prefix[l-1]<<endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

轻絵梨花泪沾衣:南泵,大少爷驾到通通闪开
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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