int a = 200;
for (int i = 3; i <= 200; ++i) {
    boolean b = true;
    for (int j = 2; j <= i - 1; j++) { 
    
        if (i % j == 0) {
        
            b = false;
        }
    }
    
    if (b) {
      System.out.println(i+"素数");
    }
}是这样的
j< = 3-1 是不是应该执行 if了? 
执行完if 回去  应该j++了啊。。 
为什么执行了if(b)呢?越看越晕 ,求明白人 讲讲!

解决方案 »

  1.   

    执行了if,而且j++了,但是不满足j<i-1;就跳出这层for循环了,让后顺序执行下面的if了
      

  2.   

    其实是
    2<=3-1,第一次满足,指向if,执行完后,j++,然后判断,只是条件不满足,所以退出循环,执行循环后面的程序!
      

  3.   


    /* 楼主的意思是想找出200以内的所有素数? */
      int a = 200; //这个a是摆设?        /* start to check every number less than 200 */
            for (int i = 3; i <= 200; ++i) {
                
                boolean b = true;
                 
                /* for loop to check a number either is prime or composite */
                for (int j = 2; j <= i - 1; j++) { 
                    
                    if (i % j == 0)   b = false;
                } 
                
                /* printout the prime number */
                if (b)   System.out.println(i+"素数");
            }
    给你加了点注释,还有楼主如果不明白循环,建议先把每个循环内的内容先确定,然后实例测试.问题2L也解释得很清楚了
      

  4.   

    按照循环步骤多看看吧,几个for循环时我也经常晕头。。