用Eratosthenes筛法判别500素数C++
时间: 2024-09-10 14:22:18 浏览: 73
Eratosthenes筛法是一种古老的求解范围内所有质数的经典算法,它通过创建一个从2到某个上限的整数数组,并依次标记每个合数的倍数,最后剩下的未标记的就是素数。以下是用C++实现Eratosthenes筛法来找出前500个素数的一个简单版本:
```cpp
#include <iostream>
#include <vector>
std::vector<int> sieveOfEratosthenes(int n) {
std::vector<bool> isPrime(n + 1, true);
isPrime[0] = isPrime[1] = false; // 0和1不是质数
for (int i = 2; i * i <= n; ++i) {
if (isPrime[i]) { // 如果i是质数
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false; // 标记i的倍数为合数
}
}
}
// 仅保留素数
std::vector<int> primes;
for (int i = 2; i <= n; ++i)
if (isPrime[i])
primes.push_back(i);
return primes;
}
int main() {
int limit = 500;
std::vector<int> primeNumbers = sieveOfEratosthenes(limit);
for (int prime : primeNumbers) {
std::cout << prime << " ";
}
std::cout << "\n";
阅读全文
相关推荐


















