c++代码写出1000到2000的所有素数
时间: 2024-11-05 19:28:16 浏览: 24
在C++中,我们可以使用Sieve of Eratosthenes算法来找出1000到2000之间的所有素数。这是一个高效的筛选素数的方法。以下是代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// Function to find prime numbers using Sieve of Eratosthenes
vector<int> sieveOfEratosthenes(int n) {
vector<bool> isPrime(n+1, true); // Initialize all numbers as prime
for (int p=2; p*p<=n; p++) { // Start from 2 and go up to sqrt(n)
if (isPrime[p]) {
for (int i=p*p; i<=n; i += p) {
isPrime[i] = false; // Mark multiples of p as not prime
}
}
}
vector<int> primes;
for (int p=2; p<=n; p++)
if (isPrime[p])
primes.push_back(p); // Add prime numbers to the vector
return primes;
}
int main() {
int start = 1000;
int end = 2000;
vector<int> primeNumbers = sieveOfEratosthenes(end);
cout << "Prime numbers between " << start << " and " << end << " are:\n";
for (int prime : primeNumbers) {
if (prime >= start && prime <= end)
cout << prime << " ";
}
return 0;
}
```
这个程序首先创建了一个布尔数组`isPrime`,然后标记出所有小于等于平方根的非质数。最后,将剩下的标记为质数并存入结果向量。
阅读全文