帮我写一套编程,用筛选法求100之内的素数
时间: 2024-11-20 07:55:02 浏览: 7
当然,我可以帮你编写一个简单的C++程序,使用筛选法(也称为埃拉托斯特尼筛法)来找出100以内的所有素数。筛选法是一种比较高效的算法,它遍历从2到√n(这里n为你要查找范围的最大值),并标记所有能整除这些数字的合数。
```cpp
#include <iostream>
#include <vector>
// 判断是否为素数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0)
return false;
}
return true;
}
// 筛选法找素数
std::vector<int> sieveOfEratosthenes(int n) {
std::vector<bool> isComposite(n + 1, false);
for (int i = 2; i * i <= n; ++i) {
if (!isComposite[i]) {
for (int j = i * i; j <= n; j += i) {
isComposite[j] = true;
}
}
}
// 把素数放入结果数组
std::vector<int> primes;
for (int i = 2; i <= n; ++i) {
if (!isComposite[i])
primes.push_back(i);
}
return primes;
}
int main() {
int limit = 100;
std::vector<int> primeNumbers = sieveOfEratosthenes(limit);
std::cout << "Prime numbers within 100 are: ";
for (const auto& num : primeNumbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
运行这个程序,你会看到100以内的所有素数。
阅读全文