编写一个判断素数的C++程序
时间: 2023-05-31 16:04:20 浏览: 118
素数判断的一个C程序
4星 · 用户满意度95%
以下是一个判断素数的C++程序:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n) {
if (n < 2) return false; // 0 和 1 不是素数
if (n == 2 || n == 3) return true; // 2 和 3 是素数
if (n % 2 == 0 || n % 3 == 0) return false; // 排除偶数和 3 的倍数
int sqrtn = sqrt(n);
for (int i = 5; i <= sqrtn; i += 6) { // 只需判断 6k ± 1 的数
if (n % i == 0 || n % (i + 2) == 0)
return false;
}
return true;
}
int main() {
int n;
cout << "请输入一个整数:";
cin >> n;
if (isPrime(n)) {
cout << n << " 是素数。" << endl;
} else {
cout << n << " 不是素数。" << endl;
}
return 0;
}
```
该程序使用了著名的「6k ± 1」定理,即一个大于 3 的自然数若不是 2 的倍数,则一定可以表示成 6k ± 1 的形式,其中 k 是一个自然数。
程序中的函数 `isPrime` 接受一个整数作为参数,返回一个布尔值,表示该数是否为素数。函数中首先排除了 0 和 1,然后判断 2 和 3 是否为素数,接着排除了偶数和 3 的倍数,最后使用上述定理判断其他数是否为素数。函数中的变量 `sqrtn` 表示该数的平方根,可以减少循环次数。
在 `main` 函数中,程序先读入一个整数,然后调用 `isPrime` 函数判断该数是否为素数,最后输出结果。
阅读全文