判断一个大于 2 的正整数 n 是否为素数,请用至少两种方法实现。c++
时间: 2023-06-17 10:04:38 浏览: 645
方法一:试除法
实现思路:从 2 开始到 n 的平方根,逐个尝试是否能整除 n,如果能整除则说明 n 不是素数。
代码如下:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n) {
if (n <= 2) {
return true;
}
int sqr = sqrt(n);
for (int i = 2; i <= sqr; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
cout << "请输入一个大于2的正整数:";
cin >> n;
if (isPrime(n)) {
cout << n << "是素数" << endl;
} else {
cout << n << "不是素数" << endl;
}
return 0;
}
```
方法二:质数规律法
实现思路:根据质数的规律,如果一个数 n 不是素数,则它可以分解为两个正整数 a 和 b 的乘积,其中 a 和 b 的大小可以相等,也可以不相等,但它们的积必须等于 n。根据这个规律,我们可以从 2 开始,依次判断 n 是否能被 2、3、4、5、6、...、n-1 整除,如果能则说明 n 不是素数。
代码如下:
```c++
#include <iostream>
using namespace std;
bool isPrime(int n) {
if (n <= 2) {
return true;
}
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
cout << "请输入一个大于2的正整数:";
cin >> n;
if (isPrime(n)) {
cout << n << "是素数" << endl;
} else {
cout << n << "不是素数" << endl;
}
return 0;
}
```
阅读全文