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
提高效率
注:個人觀點,如有錯誤,還望指出