说明 给定整数 n ,返回 所有小于等于非负整数 n 的质数的数量 。( 0 <= n <= 5 * 106 ) 输入格式 一个整数n 输出格式 小于等于n的质数的个数 样例 输入数据 1 10 输出数据 1 4 输出c++完整解题代码
时间: 2024-10-29 07:09:44 浏览: 30
JS实现计算小于非负数n的素数的数量算法示例
这是一个编程问题,需要编写一段C++代码来解决。首先,我们需要了解如何找出不超过给定整数n的所有质数。可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来提高效率。以下是完整的C++代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int countPrimes(int n) {
vector<bool> isPrime(n+1, true); // 假设所有数字都是质数
isPrime[0] = isPrime[1] = false; // 0和1不是质数
for (int i = 2; i*i <= n; ++i) { // 只需检查到根号n
if (isPrime[i]) {
for (int j = i*i; j <= n; j += i) {
isPrime[j] = false; // 如果i是质数,它的倍数都不是质数
}
}
}
int primeCount = 0;
for (int i = 2; i <= n; ++i) {
if (isPrime[i]) {
++primeCount;
}
}
return primeCount;
}
int main() {
int n;
cin >> n;
cout << countPrimes(n) << endl;
return 0;
}
```
在这个程序中,我们创建了一个布尔向量`isPrime`来跟踪每个数字是否为质数。然后通过循环遍历并标记非质数,最后计算小于等于n的质数的数量。
阅读全文