日期:2014-05-20 浏览次数:21050 次
int i = 101;
        while (i <= 200) {
            int temp = i;
            for (int j = 2; j < i/2; j++) {
                if (i % j == 0) {
                    i = i + 2;
                    break;
                }
               
            }
            if (i == temp) {
                System.out.println(i);
                i = i + 2;
            }
        }
------解决方案--------------------
先指出一个错误,再调程序。
“j是从2到i循环 ”是不需要的,应该是“j是从2到【i的根号2】的循环”
然后,稍微debug一下就知道,你if(i%j==0){continue;} 就继续否则就打印,逻辑显然有问题。
也不判断一下是否j从2到i,i是否可以被每个j整除。事实上,有一个j可以整除i,这个i就不是素数了。
所以俺改一下程序如下:
import java.util.Calendar;
public class Test {
   public static void main(String[] args) {
       int i = 101;
       while (i <= 200) {
           int sqrtI = (int) Math.sqrt(i);
           boolean flg = true;
           for (int j = 2; j <= sqrtI; j++) {
               if (i % j == 0){
                   flg = false;
                   break;
               }
           }
           if(flg)
               System.out.println(i);
          
           i = i + 2;
       }
   }
}