/** O(n^0.5) solution
* Only need to consider if n can be divided by numbers from 2 to sqrt(n).
* If n % even == 0, not prime;
* If n % odd == 0, not prime;
* 1 is not a prime number;
* 2 is a prime number.
*/
public static boolean isPrime(int n) {
// 2 is prime number
if (n == 2) {
return true;
}
// 1 is not prime number, even number greater than 2 is not prime number
if (n == 1 || (n & 1) == 0) {
return false;
}
// Starts from 3 to sqrt(n), check if n can be divied by odd numbers
for (int i = 3; i <= Math.sqrt(n); i += 2) {
if (n % i == 0)
return false;
}
return true;
}
O(n^1/2) isPrime
最新推荐文章于 2022-11-25 14:37:14 发布