对于正整数 n, 求 n 以内的(包括 n)素数个数。

#include <iostream>

#include <vector>

using namespace std;

vector<int> sieve(int n) {

vector<bool> is_prime(n + 1, true);

is_prime[0] = is_prime[1] = false;

for (int i = 2; i * i <= n; ++i) {

if (is_prime[i]) {

for (int j = i * i; j <= n; j += i) {

is_prime[j] = false;

}

}

}

vector<int> prime_count(n + 1, 0);

for (int i = 2; i <= n; ++i) {

prime_count[i] = prime_count[i - 1] + is_prime[i];

}

return prime_count;

}

int main() {

int t;

cin >> t;

vector<int> prime_count = sieve(1000);

while (t--) {

int n;

cin >> n;

cout << prime_count[n] << endl;

}

return 0;

}

全部评论

相关推荐

05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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