输出一个区间的素数用函数解决
时间: 2024-11-17 13:30:37 浏览: 18
输出一个区间内的素数可以通过编写一个C++函数来实现,这个函数通常采用埃拉托斯特尼筛法(Sieve of Eratosthenes)或更高效的算法如线性筛法。这里我会给你一个使用埃拉托斯特尼筛法的例子:
```cpp
#include <iostream>
#include <vector>
// 判断是否为素数的辅助函数
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
// 输出指定区间内的所有素数
void printPrimesInRange(int start, int end) {
std::vector<bool> primes(end + 1, true); // 初始化一个数组,所有元素初始值设为true
primes[0] = primes[1] = false;
for (int i = 2; i * i <= end; i++) {
if (primes[i]) { // 如果i是素数
for (int j = i * i; j <= end; j += i) {
primes[j] = false; // 将i的倍数标记为非素数
}
}
}
// 输出范围内所有的素数
for (int i = start; i <= end; i++) {
if (isPrime(i) && primes[i])
std::cout << i << " ";
}
std::cout << std::endl;
}
int main() {
int startRange, endRange;
std::cout << "Enter the range (start-end): ";
std::cin >> startRange >> endRange;
printPrimesInRange(startRange, endRange);
return 0;
}
```
在这个程序中,`printPrimesInRange`函数接收两个参数,表示要查找素数的范围。首先创建一个布尔数组记录每个数字是否为素数,然后通过循环筛选出素数并打印出来。
阅读全文