区间里求素数的个数c++
时间: 2024-11-12 19:06:09 浏览: 5
给定一个范围输出素数的个数和所有的素数
4星 · 用户满意度95%
在C++中,计算给定区间内的素数个数可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)或是更高级的算法如米勒-拉宾素性测试结合筛选法。下面是一个简单的基于埃拉托斯特尼筛法的例子:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int countPrimes(int start, int end) {
vector<bool> isPrime(end + 1, true); // 初始化所有数字为素数
isPrime[0] = isPrime[1] = false; // 0和1不是素数
for (int i = 2; i * i <= end; ++i) { // 遍历到√end
if (isPrime[i]) {
for (int j = i * i; j <= end; j += i) {
isPrime[j] = false; // 将i的倍数标记为非素数
}
}
}
int primeCount = 0;
for (int i = start; i <= end; ++i)
if (isPrime[i])
primeCount++;
return primeCount;
}
int main() {
int start = 10, end = 50;
cout << "Number of primes between " << start << " and " << end << " is: " << countPrimes(start, end) << endl;
return 0;
}
```
在这个例子中,我们创建了一个布尔数组`isPrime`,然后从2开始逐步筛选出所有的合数(非素数),并将它们的倍数设为非素数。最后统计`start`和`end`之间的素数个数。
阅读全文