素数就是质素,英文是Prime Number。
概念:一个大于1的自然数,除了1和它本身外,不能被其他自然数整除的数称之为素数。否则称之为合数。
下面是java判断素数的几种方法:
/**
* 时间复杂度O(n)
*
* @param n
* @return
*/
public static boolean isPrime0(int n) {
if (n < 2)
return false;
for (int i = 2; i < n; i++) {
if (n % i == 0)
return false;
}
return true;
}
/**
* 时间复杂度O(n/2)
*
* @param n
* @return
*/
public static boolean isPrime1(int n) {
if (n < 2)
return false;
//偶数一定不是素数,去掉偶数
if (n == 2)
return true;
if (n % 2 == 0)
return false;
//从3开始
for (int i = 3; i < n; i += 2) {
if (n % i == 0)
return false;
}
return true;
}
/**
*
* 时间复杂度O(Math.sqrt(n))
*
* @param n
* @return
*/
public static boolean isPrime2(int n) {
if (n < 2)
return false;
//判断指定数的平方根内的数
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0)
return false;
}
return true;
}
/**
* 时间复杂度O(Math.sqrt(n)/2),效率最好
*
* @param n
* @return
*/
public static boolean isPrime3(int n) {
if (n < 2)
return false;
//偶数一定不是素数,去掉偶数
if (n == 2)
return true;
if (n % 2 == 0)
return false;
//从3开始,判断指定数的平方根内的数
for (int i = 3; i <= Math.sqrt(n); i++) {
if (n % i == 0)
return false;
}
return true;
}