判断一个数是否是素数的高效算法c++代码
时间: 2023-08-28 07:05:43 浏览: 124
以下是一个判断一个数是否是素数的高效算法的C++代码示例:
```cpp
#include <iostream>
#include <cmath>
bool isPrime(int n) {
if (n <= 1) {
return false;
}
if (n == 2) {
return true;
}
if (n % 2 == 0) {
return false;
}
int sqrtN = sqrt(n);
for (int i = 3; i <= sqrtN; i += 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int num;
std::cout << "Enter a number: ";
std::cin >> num;
if (isPrime(num)) {
std::cout << num << " is a prime number." << std::endl;
} else {
std::cout << num << " is not a prime number." << std::endl;
}
return 0;
}
```
该算法使用了试除法,遍历从3到n的平方根的所有奇数,判断是否能整除n。其中,sqrt函数来自cmath库,用于计算平方根。如果存在能整除n的数,则n不是素数;否则,n是素数。
该算法的时间复杂度为O(sqrt(n)),其中sqrt表示平方根运算。因此,对于较大的数,该算法相对高效。
阅读全文