计算 1 到 n 的所有素数;
时间: 2024-04-30 10:24:25 浏览: 72
这个问题可以使用 “筛法”(Sieve of Eratosthenes)来解决,筛法是一种简单而又高效的算法,用于查找一定范围内所有的素数。具体实现步骤如下:
1. 创建一个布尔数组 prime,大小为 n+1,初始值全部为 true。
2. 从 2 开始遍历到 n,如果 prime[i] 为 true,则说明 i 是素数,将数组中 i 的倍数(除了 i 本身)全部标记为 false。
3. 遍历完毕后,prime 数组中仍然为 true 的元素就是素数。
下面是 C++ 代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
vector<int> getPrimes(int n) {
vector<int> primes;
vector<bool> isPrime(n+1, true);
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
primes.push_back(i);
for (int j = i+i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
return primes;
}
int main() {
int n;
cout << "请输入一个正整数n:" << endl;
cin >> n;
vector<int> primes = getPrimes(n);
cout << "1到" << n << "之间的所有素数是:" << endl;
for (int prime : primes) {
cout << prime << " ";
}
cout << endl;
return 0;
}
```
输入一个正整数 n,程序会输出 1 到 n 之间的所有素数。
阅读全文