空间换时间

质数数量

https://ac.nowcoder.com/acm/problem/22226

建立一个布尔值数组,记录下每一个数是否为质数,然后累加计算。

#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>

using namespace std;

const int maxn = 1000010;

int main(){
    vector<int> v(maxn, 1), sum(maxn, 0);
    for(int i = 2; i <= maxn; ++i){
        if(v[i]){
            for(int j = i + i; j <= maxn; j += i) v[j] = 0;
        }
    }
    for(int i = 2; i <= maxn; ++i){
        if(v[i]) sum[i] = sum[i - 1] + 1;
        else sum[i] = sum[i - 1];
    } 
    int t, n;
    cin >> t;
    while(t--){
        cin >> n;
        cout << sum[n] << endl;
    }

    return 0;
}
全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务