用c++代码写求1到n的所有质数
时间: 2024-10-10 08:02:32 浏览: 32
C++ 实现求小于n的最大素数的实例
5星 · 资源好评率100%
在C++中,我们可以使用 Sieve of Eratosthenes 算法来找出1到n之间的所有质数。这是一种简单而高效的算法,它通过不断排除能被已知质数整除的数来找到剩余的质数。以下是简单的代码实现:
```cpp
#include <iostream>
#include <vector>
// Function to find all prime numbers up to n
std::vector<int> sieveOfEratosthenes(int n) {
std::vector<bool> isPrime(n + 1, true); // 初始化一个布尔数组,假设所有数字都是质数
isPrime[0] = false; // 0和1不是质数
isPrime[1] = false;
for (int p = 2; p * p <= n; p++) { // 只需检查到√n
if (isPrime[p]) { // 如果p是质数
for (int i = p * p; i <= n; i += p) // 将i标记为非质数
isPrime[i] = false;
}
}
// 收集所有的质数
std::vector<int> primes;
for (int p = 2; p <= n; p++)
if (isPrime[p])
primes.push_back(p);
return primes;
}
int main() {
int n;
std::cout << "Enter a number: ";
std::cin >> n;
std::vector<int> primeNumbers = sieveOfEratosthenes(n);
std::cout << "Prime numbers from 1 to " << n << " are: ";
for (int prime : primeNumbers)
std::cout << prime << " ";
std::cout << std::endl;
return 0;
}
```
当你运行这个程序并输入一个整数`n`,它将返回从1到`n`的所有质数。
阅读全文