输出所有小于或等于所输入数字的质数,用C++
时间: 2024-10-09 13:00:59 浏览: 27
在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++) { // 只需要检查到sqrt(num),超过这个范围就不会影响结果
if (num % i == 0)
return false;
}
return true;
}
// 输出所有小于或等于n的质数
void printPrimesBelowNum(int n) {
std::vector<bool> prime(n + 1, true); // 假设所有数都是质数,从2开始逐步标记非质数
prime[0] = prime[1] = false;
for (int i = 2; i * i <= n; i++) {
if (prime[i]) {
for (int j = i * i; j <= n; j += i) // 将i的倍数标记为非质数
prime[j] = false;
}
}
for (int i = 2; i <= n; i++) {
if (prime[i])
std::cout << i << " ";
}
}
int main() {
int input;
std::cout << "请输入一个整数: ";
std::cin >> input;
printPrimesBelowNum(input);
return 0;
}
```
阅读全文