c++1000-2000内的素数
时间: 2024-10-29 12:12:51 浏览: 73
C++语言中查找范围从1000到2000之间的素数,可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)或者简单的试除法。这里我们简单介绍一下试除法的思路:
首先,我们可以创建一个布尔数组isPrime[2001],所有初始值设为true,代表每个数字都是可能的素数。然后从2开始,遍历到根号2000左右(因为大于这个数的因子一定小于它本身),对于每一个素数i,将它的倍数都标记为非素数(isPrime[i*j] = false,其中j是当前索引位置)。最后剩下的isPrime数组中为true的就是1000到2000间的素数。
以下是简化版的伪代码示例:
```cpp
#include <vector>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
if (n == 2 || n == 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
for (int i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) return false;
}
return true;
}
vector<int> findPrimesInRange(int start, int end) {
vector<bool> isPrime(end+1, true);
vector<int> primes;
for (int i = 2; i * i <= end; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= end; j += i) {
isPrime[j] = false;
}
}
}
for (int i = start; i <= end; i++) {
if (isPrime[i]) {
primes.push_back(i);
}
}
return primes;
}
// 调用函数并打印结果
vector<int> primeList = findPrimesInRange(1000, 2000);
for (int prime : primeList) {
cout << prime << " ";
}
```
阅读全文