C++中素数如何表达
时间: 2024-11-04 07:14:17 浏览: 21
在C++中,通常有两种方式来表达素数:
1. **布尔数组法**:创建一个与整数范围相同的布尔数组,初始值全部设为`true`,然后从2开始,将所有该数的倍数标记为`false`。这样剩下的全是素数。例如,对于一个大整数n,可以创建一个bool数组isPrime[n+1]。
```cpp
std::vector<bool> isPrime(n+1, true);
for (int i = 2; i * i <= n; ++i) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
```
2. **迭代器法**:另一种更高效的方法是只检查到√n,因为大于这个数值的因数一定小于它本身。遍历并排除已知非素数,直到遇到下一个未标记的数,即为素数。
```cpp
#include <iostream>
#include <vector>
using namespace std;
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;
}
// 示例
int main() {
int limit = 50;
vector<int> primes;
for (int i = 2; i <= limit; ++i) {
if (isPrime(i)) {
primes.push_back(i);
}
}
// 打印素数列表
for (int prime : primes) {
cout << prime << " ";
}
return 0;
}
```
阅读全文