3、(本题15分)编程实现筛法求素数。要求: (1)编写函数求解并输出素数,void primc filter(int range),其中,range 为求解范围, 为了程序的通用性,需要根据输入的范
时间: 2024-11-27 19:11:38 浏览: 4
在编程中,我们可以使用著名的“埃拉托斯特尼筛法”(Sieve of Eratosthenes)来求解素数。这是一个古老而有效的方法,尤其适用于较小范围内找出所有素数。以下是使用C++编写的函数实现示例:
```cpp
#include <iostream>
#include <vector>
// 定义一个函数用于筛选素数
void primeSieve(int range) {
std::vector<bool> isPrime(range + 1, true); // 初始化一个布尔数组,假设所有数都是素数
isPrime[0] = isPrime[1] = false; // 0和1不是素数
for (int i = 2; i * i <= range; ++i) { // 只需检查到√range即可
if (isPrime[i]) {
// 将i的倍数标记为非素数
for (int j = i * i; j <= range; j += i)
isPrime[j] = false;
}
}
// 输出素数
for (int i = 2; i <= range; ++i) {
if (isPrime[i])
std::cout << i << " ";
}
}
int main() {
int range;
std::cout << "请输入一个范围:";
std::cin >> range;
primeSieve(range);
std::cout << std::endl;
return 0;
}
```
这个`primeSieve`函数会根据给定的范围`range`,筛选出该范围内的所有素数。用户可以调用此函数并通过输入值来求解。
阅读全文