用C++格式写函数判断素数,然后输出200以内的所有素数。(要求:采用bool类型)
时间: 2024-09-10 12:04:31 浏览: 34
以下是一个C++函数,用于判断一个数是否为素数,并且使用该函数输出200以内的所有素数。
```cpp
#include <iostream>
#include <cmath>
bool isPrime(int num) {
if (num <= 1) return false; // 小于等于1的数不是素数
if (num <= 3) return true; // 2和3是素数
if (num % 2 == 0 || num % 3 == 0) return false; // 排除能被2和3整除的数
// 只检查到sqrt(num)即可,因为如果num有一个因子大于其平方根,
// 那么它必然还有一个小于或等于其平方根的因子。
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) return false;
}
return true;
}
int main() {
for (int i = 2; i <= 200; ++i) {
if (isPrime(i)) {
std::cout << i << " ";
}
}
std::cout << std::endl;
return 0;
}
```
解释:
1. `isPrime` 函数首先检查数字是否小于等于1(不是素数),以及是否是2或3(这两种是最小的素数)。
2. 对于大于3的数,我们首先排除所有能被2和3整除的数,这样可以提高效率。
3. 然后,我们使用一个循环来检查是否有任何小于或等于当前数字平方根的数能够整除它。循环变量`i`从5开始,每次增加6,这样可以同时检查`i`和`i + 2`,因为除了2和3之外的所有素数都可以表示为`6k ± 1`的形式。
4. `main` 函数中,我们遍历从2到200的所有数字,使用`isPrime`函数检查每个数字是否为素数,如果是,则输出。