题目
Define a function that takes one integer argument and returns logical value true or false depending on if the integer is a prime. Per Wikipedia, a prime number (or a prime) is a natural number greater than 1 that has no positive divisors other than 1 and itself. 定义一个函数,该函数接受一个整型参数并根据整型是素数返回逻辑值true或false。 根据维基百科,素数(或素数)是一个大于1的自然数,除了1和它本身之外没有其他正因子。
例子
is_prime(1) / false / is_prime(2) / true /
is_prime(-1) / false /
分析
经典的求素数问题,先判断是否大于1,再循环判断能否整除其他数。
我的解法
public class Prime {
public static boolean isPrime(int num) {
if(num <= 1){
return false;
}
double sqrt = Math.sqrt(num);
for(int i = 2 ; i <= sqrt ; i++){
if (num % i == 0){
return false;
}
}
return true;
}
}
参考解法
public class Prime {
public static boolean isPrime(int num) {
return num > 1 && java.math.BigInteger.valueOf(num).isProbablePrime(20);
}
}
提升
- 求素数判断到sqrt(num)就可以了
- 利用BigInteger的自带方法可以取巧判断是否为素数