质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
对于每个数n,其实并不需要从2判断到n-1,这样效率极低。
我们知道,一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n),
据此,遍历到sqrt(n)即可,因为若sqrt(n)左侧找不到约数,那么右侧也一定找不到约数。
1 public static boolean isPrime(int num) {2 int temp = (int) Math.sqrt(num);3 for (int i = 2; i <= temp; i++) {4 if (temp % i == 0)5 return false;6 }7 return true;8 }