100以内的素数判断:
class Prime {
public static void main(String[] args) {
int num = 0;
int count = 0;
for (int i = 2; i <= 100; i++) {
boolean isPrime = true;
for (int j = 2; j < i; j++) {
count++;//内层循环的执行次数
if (i % j == 0) {
isPrime = false;
}
}
if (isPrime) {
num++;
System.out.println(i);
}
}
System.out.println("100内的素数个数:" + num);
}
}
结果
100内的素数个数:25
count=4851
进行优化
将上面的for循环改为 Math.sqrt(i) ,对当前数进行开根号。//如果一个数不是素数且不等于1,那么它的最小质因数小于等于他的平方根。
for (int j = 2; j < Math.sqrt(i); j++) {
count++;
if (i % j == 0) {
isPrime = false;
break;
}
}
100内的素数个数:29
count=232
不使用定义的boolean类型的isPrime变量
将break改为continue 在第一for循环的时候加上标记 _L: 在执行到不是素数的时候直接跳出当次循环,进行下一个数的判断。
class Prime {
public static void main(String[] args) {
int num = 0;
int count = 0;
_L: for (int i = 2; i <= 100; i++) {
// boolean isPrime = true;
for (int j = 2; j < Math.sqrt(i); j++) {
count++;
if (i % j == 0) {
// isPrime = false;
continue _L;
}
}
num++;
/*
* if (isPrime) { num++; System.out.println(i); }
*/
}
System.out.println("100内的素数个数:" + num);
System.out.println("count=" + count);
}
}