c++在1到n范围内所有质数
时间: 2024-09-27 13:02:31 浏览: 39
C++求1-n中有多少个质数,最简单易懂!
在 C++ 中找到1到n范围内的所有质数,可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)。这是一种经典算法,通过不断排除合数(非质数),找出所有的素数。以下是简单的步骤:
```cpp
#include <iostream>
#include <vector>
std::vector<int> sieveOfEratosthenes(int n) {
std::vector<bool> isPrime(n + 1, true); // 初始化所有数字为真(假设它们都是质数)
isPrime[0] = isPrime[1] = false; // 0和1不是质数
for (int i = 2; i * i <= n; ++i) { // 只需要检查到√n
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
std::vector<int> primes; // 存储质数的结果
for (int i = 2; i <= n; ++i) {
if (isPrime[i]) {
primes.push_back(i);
}
}
return primes;
}
int main() {
int n = 50; // 想要查找的范围
auto primeNumbers = sieveOfEratosthenes(n);
for (const auto& prime : primeNumbers) {
std::cout << prime << " ";
}
std::cout << "\n";
return 0;
}
```
当你运行这个程序时,它会输出1到n范围内的所有质数。如果你想改变范围,只需更改 `main` 函数中的 `n` 的值即可。
阅读全文