输入一个整数n,输出不大于n的所有素数(以一个空格间隔)。c++for循环
时间: 2024-09-24 16:04:56 浏览: 35
最全C++经典算法100个(可以不看算法书了)
4星 · 用户满意度95%
在 C++ 中,我们可以使用 for 循环和一些基本的素数检查算法来实现这个功能。下面是一个简单的示例,它使用了埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种找出所有小于或等于给定数值 n 的素数的有效方法:
```cpp
#include <iostream>
using namespace std;
void printPrimes(int n) {
bool isPrime[n+1];
memset(isPrime, true, sizeof(isPrime)); // 初始化所有数字为素数
for (int p=2; p*p<=n; p++) { // 遍历到√n
if (isPrime[p]) { // 如果p是素数
for (int i=p*p; i<=n; i += p) // 将p的倍数标记为非素数
isPrime[i] = false;
}
}
// 输出大于0的素数(因为isPrime数组已将合数置为false)
for (int p=2; p<=n; p++)
if (isPrime[p])
cout << p << " ";
// 使用一个空格隔开每个素数,如果不需要可以省略这行
cout << endl;
}
int main() {
int n;
cout << "Enter a number: ";
cin >> n;
printPrimes(n);
return 0;
}
```
阅读全文