c++判断素数这个代码有啥问题
时间: 2023-08-13 19:03:13 浏览: 88
C++-判断一个素数
这个代码是正确的,但是可以进行一些优化。以下是一些可以优化的地方:
1. 在判断一个数是否为素数时,只需要判断它是否能被 2 到 sqrt(num) 之间的整数整除即可,因为如果有一个大于 sqrt(num) 的整数可以整除它,那么一定会有一个小于 sqrt(num) 的整数也可以整除它。因此,for 循环的条件可以改为 `i*i <= num`。
2. 在判断一个数是否为素数时,如果该数能被 2 整除,那么它一定不是素数,因此可以先特判一下。
3. 在判断一个数是否为素数时,如果该数是偶数,那么只需要判断它是否等于 2 即可,因为其他偶数一定不是素数。
4. 在判断一个数是否为素数时,可以从 3 开始,每次加 2,这样可以减少循环次数,提高效率。
以下是一个经过优化的代码:
```c++
#include <iostream>
using namespace std;
bool isPrime(int num) {
if (num <= 1) {
return false;
}
if (num == 2) {
return true;
}
if (num % 2 == 0) {
return false;
}
for (int i = 3; i*i <= num; i += 2) {
if (num % i == 0) {
return false;
}
}
return true;
}
int main() {
int num;
cout << "请输入一个整数:";
cin >> num;
if (isPrime(num)) {
cout << num << "是素数。" << endl;
} else {
cout << num << "不是素数。" << endl;
}
return 0;
}
```
阅读全文