用c++实现求小于N的所有素数,并将素数保存在一维数组中
时间: 2024-12-06 13:26:17 浏览: 26
在C++中,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来找到所有小于给定整数N的素数。这种方法通过逐个标记能被当前已知素数整除的数,最终剩下的未标记的就是素数。
以下是简单的C++代码实现:
```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;
}
// 寻找并存储所有小于N的素数
std::vector<int> findPrimes(int N) {
std::vector<bool> isComposite(N + 1, false);
std::vector<int> primes;
// 使用埃拉托斯特尼筛法
for (int i = 2; i * i <= N; ++i) {
// 如果i是素数
if (!isComposite[i]) {
primes.push_back(i);
// 标记i的所有倍数为合数
for (int j = i * i; j <= N; j += i)
isComposite[j] = true;
}
}
// 放入到一维数组中,如果N本身是素数,也添加
if (isPrime(N))
primes.push_back(N);
return primes;
}
int main() {
int N = 50; // 设置你要查找素数的上限
std::vector<int> primeArray = findPrimes(N);
for (const auto &prime : primeArray) {
std::cout << prime << " ";
}
std::cout << "\n";
return 0;
}
```
阅读全文