这里我写了几个求素数的方法和大家交流一下
// ① 进行穷举 时间复杂度O(n)
?
class="java"> private static boolean primer1(int number) {
for(int i = 2 ; i < number -1 ; i++ ){
if(number%i == 0){
return false ;
}
}
return true;
}
?// ② 使用 √n 进行计算 时间复杂度O(√n)
?
private static boolean primer2(int number) {
// 这里我们使用 i*i 而不使用 Math.sqrt(number) 因为求根是一个非常耗时的操作
for (int i = 2; i*i<number; i++) {
if(number%i == 0){
return false ;
}
}
return true;
}
? // ③ 使用爱拉托逊斯算法 充分利用了一素数的定义 如果一个数 m 是 另一个数 n 的倍数则这个数肯定不是素数 时间复杂度
?
?
?
?
private static boolean primer3(int number) {
boolean[] prime = new boolean[number];
for (int i = 2; i < prime.length - 1; i++) {
if(!prime[i-1])
for (int j = i - 1; j < prime.length; j += i)
prime[j] = true ;
}
return !prime[number-1];
}
?
?
?