当前等级

题目

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,再循环判断能否整除其他数。

我的解法

  1. public class Prime {
  2. public static boolean isPrime(int num) {
  3. if(num <= 1){
  4. return false;
  5. }
  6. double sqrt = Math.sqrt(num);
  7. for(int i = 2 ; i <= sqrt ; i++){
  8. if (num % i == 0){
  9. return false;
  10. }
  11. }
  12. return true;
  13. }
  14. }

参考解法

  1. public class Prime {
  2. public static boolean isPrime(int num) {
  3. return num > 1 && java.math.BigInteger.valueOf(num).isProbablePrime(20);
  4. }
  5. }

提升

  1. 求素数判断到sqrt(num)就可以了
  2. 利用BigInteger的自带方法可以取巧判断是否为素数