用c++寫出埃拉托色尼筛法,要用using namespace std; 且要包含boolean[] sieveOfEratosthenes(int max);
时间: 2024-02-18 12:05:15 浏览: 69
好的,以下是用C++编写的埃拉托色尼筛法:
```
#include <iostream>
#include <vector>
using namespace std;
vector<bool> sieveOfEratosthenes(int max) {
vector<bool> isPrime(max+1, true); // 初始化为true
isPrime[0] = isPrime[1] = false; // 0和1不是质数
for (int i = 2; i <= max; ++i) {
if (isPrime[i]) {
for (int j = i*i; j <= max; j += i) {
isPrime[j] = false;
}
}
}
return isPrime;
}
int main() {
int max = 100;
vector<bool> primes = sieveOfEratosthenes(max);
for (int i = 2; i <= max; ++i) {
if (primes[i]) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
```
这个程序定义了一个 `sieveOfEratosthenes` 函数,它返回一个 `vector<bool>`,其中的元素表示从 0 到 max 是否是质数。该函数的具体实现就是标准的埃拉托色尼筛法。程序还包含一个 `main` 函数,它使用 `sieveOfEratosthenes` 函数来找出 0 到 100 中的所有质数,并将它们输出到屏幕上。
阅读全文