本人JAVA新手,经常有小问题不明白,想拜个师傅,水平高的或者跟我一样菜的都可以,比我高的就学习,跟我差不多的就共同进步。 
我问的问题不会很烦,都是些简单问题。估计不会超过QQ的聊天框好心人帮帮,谢谢 
QQ;150090669 我的问题:求100到200之间的质数。 public class Zhishu { public static void main(String[] args) { 
for(int i=100;i <200;i++){ 
outer:for(int j=2;j <i;j++){ 
if(i%j==0)break outer; 
System.out.println(i); 

} } } 不是已经break outer了吗?怎么里面的循环还在做??

解决方案 »

  1.   

    public static void main(String[] args) { 
        for(int i=100;i <200;i++){ 
    outer:for(int j=2;j <i;j++){ 
        if(i%j==0)
        {
    break outer; 
        }
        System.out.println(i); 

        } 
    } 把代码规范一下,就是这样了。
      

  2.   


    public class Zhishu {  public static void main(String[] args) { 
    for(int i=100;i <200;i++){ 
    outer:for(int j=2;j <i;j++){ 
    if(i%j==0)break outer; 
    System.out.println(i); 

    }  } } 没有什么问题啊.
    首先是i=100;j从2开始,所以不会输出100;然后是i=101,为2-100之间没有数与101求余为0,所以一直输出
    首先可以把所有的偶数排除了.
    101,103,105(因为j是2-104,中间的3与105求余为0,所以只会输出1个105)
    以此类推.......
      

  3.   

    public static void main(String[] args) {
    for (int i = 101; i <= 200; i+=2) {
    boolean f=true;
    for (int j = 2; j < i; j++) {
    if(i%j==0)
    {
    f=false;
    break;
    }
    }
    if(f)
    {
    System.out.println(" "+i);
    }


    }
      

  4.   


    public class Zhishu {  public static void main(String[] args) { 
    int count=0;
    for(int i=100;i <200;i++){
    count=0;
    outer:for(int j=2;j <i;j++){ 
    if(i%j==0)
    {
    System.out.println(i+"与"+j+"求余为0!共输出"+i+"-----"+(count)+"次");
    count=0;
    break outer;
    }
    count++;
    System.out.print(i+",");
    }
    if(count!=0)
    {
    System.out.println("\n共输出"+i+"-----"+(count)+"次");
    }

    }  } } 
      

  5.   

    你这里当不是质数的时候要退出循环,是质数的时候打印出来后也要退出啊,否则就会打印很多次的
    你的代码:在i%j==0后break,这样当i为某一个值的时候,j虽然不停的改变,但是i%j!=0次数会有很多,所以会打印很多次     修改如下:
                   for(int i=100;i <200;i++){ 
                 outer:for(int j=2;j <i;j++){ 
                     if(i%j!=0){
                      System.out.println(i); 
                     }
                     break outer; //不管是不是质数都要退出.这里只是退出本层次的循环,所以outer要不要无所谓,                    
                                     //如果你想退出最外面的循环,那就需要用循环标识了     
                 } 
             }
      

  6.   


    你这个是给他调试用的吧?!那句输出执行了N多遍。
    给楼主来个简单的吧:
    public class Prime {
    public static void main(String args[]){
    int count = 0;

    for (int i=100; i<=200; i++){
    for (int j=2; j<(int)Math.sqrt(i); j++){
    if (i%j == 0){
    break;
    }
    else{
    System.out.println(i);
    count ++;
    break;
    }
    }
    }

    System.out.println("Total: "+ count);
    }
    }
      

  7.   

    晕 上面那个有问题。这下对了。
    public class Prime {
    public static void main(String args[]){
    int count = 0;

    for (int i=101; i<=200; i+=2){
    int k = (int)Math.sqrt(i)+1;

    for (int j=2; j<=k; j++){
    if (i%j == 0)
    break;

    if (j >= k){
    System.out.print(i +", ");
    count ++;
    }
    }
    }

    System.out.println("\nTotal: "+ count);
    }
    }
    101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 
    Total: 21
      

  8.   

    原来是求质数的啊.简单~~public class Zhishu {     public static void main(String[] args) { 
            for(int i=100;i <200;i++){
                 int j=-1; 
                for(j=2;j <i;j++){ 
                    if(i%j==0)//任何一个求余为0就退出里边循环.
                       break; 
                } 
                if(i==j)//表示里边的循环是j==i是才跳出的,也就是2--->i-1都与i求余为不为0
                {
                   System.out.println(i);
                 }
            }     } }