求101-200之间的质数
我的程序是这样的:
public class Testzhishu
{
   public static void main(String[] args)
   {
for(int i=101;i<200;i+=2)
{
  boolean b=true;//如果把这条语句放到main里,for的外面,结果会不一样,请问为什么??谢谢

  for(int j=2;j<i;j++)
  {
    if(i%j==0)
{
  b=false;
  break;
        }
  }
    if(!b){continue;}
    System.out.println("101-200内的质数是:"+i);
}
  }
}

解决方案 »

  1.   

    public class Testzhishu
    {
    public static void main(String[] args)
    {

    for(int i=101;i<200;i+=2)
    {
    boolean b=true;//如果把这条语句放到main里,for(int i....) 的外面,结果会不一样,请问为什么??谢谢  for(int j=2;j<i;j++)
    {
    if(i%j==0)
    {
    b=false;
    break;
    }
    }
    if(!b){continue;}
    System.out.println("101-200内的质数是:"+i);
    }
    }
    }
      

  2.   


    for (int i = 101; i < 200; i += 2) {
                boolean b = true;            for (int j = 2; j < i; j++) {
                    if (i % j == 0) {
                        b = false;
                        break;//即使你在这里brack了,只是跳出里面的for,外面的for再次执行的时候b还是true,假如放在外面,只要一次设成false,就一直false
                    }
                }
                if (!b) {
                    continue;
                }
                System.out.println("101-200:" + i);
            }
      

  3.   

    一个在for循环的内部,一个在外部,怎么可能会相同呢
    你的所有程序都是在for循环里执行的,
    我想楼主还没有怎么理解这个程序具体的执行流程,
    多练练就好了.
      

  4.   

    当b在for里面时,每一个循环开始时,你相当于创建了一个新的b,并赋值为true。在if(i%j==0)中如果b没有变成false,那它还是true
    当b在for外面时,你只创建了一个b,并初始化为true。在if(i%j==0)中,b可能被修改为false,也可能不变。如果b=false,
    那下次循环时如果不做修改,b仍是false。看出区别了吗?
      

  5.   

    当b任然是flase的时候,如果下一个数是质数,貌似这样判断的结果就错了呢!