求100以内的素数c++
时间: 2024-11-22 08:47:16 浏览: 24
在C++中,求100以内的素数可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)算法,这是一种经典高效的查找素数的方法。以下是简单的C++代码示例:
```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> findPrimes(int limit) {
std::vector<bool> isComposite(limit + 1, false);
std::vector<int> primes;
for (int i = 2; i * i <= limit; ++i) {
if (!isComposite[i]) {
// 如果i是素数,将它的倍数标记为合数
for (int j = i * i; j <= limit; j += i)
isComposite[j] = true;
}
}
// 收集所有未标记为合数的数字作为素数
for (int i = 2; i <= limit; ++i)
if (!isComposite[i])
primes.push_back(i);
return primes;
}
int main() {
int limit = 100;
std::vector<int> primes = findPrimes(limit);
std::cout << "100以内的素数有:\n";
for (const auto& prime : primes)
std::cout << prime << " ";
std::cout << "\n";
return 0;
}
```
这段程序首先创建了一个布尔数组`isComposite`,然后通过遍历从2到sqrt(limit),如果找到一个质数,就将其倍数标记为合数。最后,剩下的未标记为合数的就是素数。
阅读全文