C++判断一个数是质数的函数,时间最优!
时间: 2024-03-08 12:48:12 浏览: 55
以下是一个时间复杂度最优的C++函数,用于判断一个数是否为质数。
```c++
bool isPrime(int n) {
if (n <= 1) {
return false;
}
else if (n <= 3) {
return true;
}
else if (n % 2 == 0 || n % 3 == 0) {
return false;
}
int i = 5;
while (i * i <= n) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
i += 6;
}
return true;
}
```
在这个函数中,我们首先判断输入的数是否小于等于1,如果是,那么它不是质数,直接返回false。然后,我们判断输入的数是否小于等于3,如果是,那么它是质数,直接返回true。接着,我们判断输入的数是否能被2或3整除,如果能,那么它不是质数,直接返回false。
最后,我们用6k ± 1的形式进行循环,这是因为质数要么是6k + 1,要么是6k - 1。我们从5开始,每次加6,检查6k-1和6k+1是否能整除该数。如果存在一个数能够整除该数,那么它不是质数,直接返回false。如果循环结束,仍未找到可以整除的数,那么它是质数,返回true。
这个函数的时间复杂度是O(sqrt(n)/6),时间效率非常高。
阅读全文