// 求100以内的素数 素数的定义:只能被1和自身整除的为素数 其中素数一定是奇数 偶数一定不是素数 0,1 一定不是素数
第一版:暴力循环解法
public static int getNumber(int number) {
int count = 0;
for (int i = 2 ; i<number; i++) {
count += isPrime(i) ? 1 : 0;
}
return count;
}
public static Boolean isPrime(int i) {
for (int j = 2; j <= i; j++) {
if (i % j == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
int num = getNumber(100);
System.out.println(num);
}
优化建议:j < i 判断时间复杂度是0(n) 根号i = m * n 例如:根号21 = 4.58 所以可以循环到4,其中3<4<7,在判断3时已经知道21是素数了,循环到4已经知道结果了。所以条件可以更改为j < 根号i,也可以为j * j <= i。
第二版:优化时间复杂度为o(根号i)
public static int getNumber(int number) {
int count = 0;
for (int i = 2 ; i<number; i++) {
count += isPrime(i) ? 1 : 0;
}
return count;
}
public static Boolean isPrime(int i) {
for (int j = 2; j*j <= i; j++) {
if (i % j == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
int num = getNumber(100);
System.out.println(num);
}