如何使用C++编程语言来输出100以内的所有素数?
时间: 2024-12-17 09:37:38 浏览: 72
在C++中,我们可以使用Sieve of Eratosthenes算法来找出100以内的所有素数。这是一种古老而高效的筛选法,步骤如下:
1. 创建一个布尔型数组isPrime,大小为101(因为范围是1到100),并初始化所有元素为true。这是为了表示从2到100的所有数字默认被认为是素数。
2. 遍历从2开始,直到sqrt(100)(取整后的结果)。对于每个遍历到的素数i,将isPrime数组下标i及其倍数的位置设置为false,因为它们不是素数。例如,如果i=3,就将3*3, 3*4, ..., 3*33等位置标记为非素数。
3. 最后,遍历isPrime数组,输出所有值为true的索引,对应的数字就是100以内的素数。
以下是简单的C++代码实现:
```cpp
#include <iostream>
#include <cmath>
void printPrimes(int n) {
bool isPrime[n + 1];
std::fill(isPrime, isPrime + n + 1, true); // 默认所有数字视为素数
for (int i = 2; i * i <= n; ++i) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i)
isPrime[j] = false;
}
}
for (int i = 2; i <= n; ++i)
if (isPrime[i])
std::cout << i << " ";
}
int main() {
printPrimes(100);
return 0;
}
```
当你运行这段程序,它会输出100以内的所有素数。
阅读全文