java 练习题
判断 101-200 之间有多少个素数,并输出所有素数
public class Prime {
public static int count = 0;
public static void main(String[] args) {
for (int i = 101; i < 200; i++) {
boolean b = true;
for (int j = 2; j <= Math.sqrt(i); j++) {//---------------
if (i % j == 0) {
b = false;
break;
}
}
if (b) {
System.out.print(i+" ");
count++;
}
}
System.out.println("\n素数的个数:" + count);
}
}
发现 第二for循环不用 Math.sqrt(i) 总是有问题
然后,发现了这个问题:为什么要用Math.sqrt(i)方法(返回正确舍入的 double 值的正平方根)?
因为,只需要判断到这个值,
例如:判断100,只需要判断到10就可以了,10*10
100=n1*n2,那么n1或者n2一定有个<=10,所以只需要判断的10
提高效率
注:个人观点,如有错误,还望指出