Java中如何实现判断是否为质数的函数?
发布时间:2023-07-27 20:43:09
在Java中,判断一个数是否为质数可以利用以下几种方法:
1. 简单地对每个小于该数的正整数进行除法检查,判断是否能整除该数。如果存在能整除该数的数,则该数不是质数;否则,该数为质数。该方法的时间复杂度为O(n)。
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
2. 对于一个数n,如果它不是质数,则必定存在两个因子a和b,且满足2 <= a <= b <= √(n)。因此,只需要在[2, √(n)]之间遍历,检查是否有满足条件的因子。该方法的时间复杂度为O(√n)。
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i*i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
3. 利用质数的性质,根据素数筛法(Sieve of Eratosthenes)先生成一个质数表,再通过查表的方式进行判断。该方法的时间复杂度为O(nlog(logn))。
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
boolean[] isPrime = new boolean[num+1];
Arrays.fill(isPrime, true);
isPrime[0] = isPrime[1] = false;
int sqrt = (int) Math.sqrt(num);
for (int i = 2; i <= sqrt; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= num; j += i) {
isPrime[j] = false;
}
}
}
return isPrime[num];
}
以上是常用的几种方法判断一个数是否为质数,在实际应用中可以根据具体需要选择合适的方法。
