iteye_12241 2011-08-28 15:57
浏览 275
已采纳

多重for循环的continue问题

[code="java"]import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Problem60 {

public static boolean[] prime = new boolean[1000000];

public static boolean IsPrime(long number) {

    for (int i = 2; i * i <= number; i++) {
        if (number % i == 0)
            return false;
    }
    return true;
}

public static void main(String[] args){
    Arrays.fill(prime, false);
    prime[1] = true;
    prime[2] = true;
    int count_prime = 0;
    for(int i=3; i<1000; i=i+2){
        if(IsPrime(i)){
            prime[i] = true;
            count_prime++;
        }
    }
    int[] prime_set = new int[count_prime];
    prime_set[0] = 1;
    prime_set[1] = 3;
    int index = 2;
    for(int i=7; i<1000; i++){
        if(prime[i])
            prime_set[index++] = i;
    }

    for(int i=3; i<prime.length; i=i+2){
        if(IsPrime(i)){
            prime[i] = true;
        }
    }

    System.out.println("prime_set:"+prime_set.length);
    int len = prime_set.length;
    int i=0,j=0,k=0,l=0,m=0;
    for(i=0; i<len; i++){
        for(j=i+1; j<len; j++){
            int t1= Integer.parseInt(prime_set[i]+""+prime_set[j]);
            int t2= Integer.parseInt(prime_set[j]+""+prime_set[i]);
            if(!prime[t1]||!prime[t2]){
                continue;
            }
            for(k=j+1; k<len; k++){
                int t3= Integer.parseInt(prime_set[i]+""+prime_set[k]);
                int t4= Integer.parseInt(prime_set[k]+""+prime_set[i]);
                int t5= Integer.parseInt(prime_set[k]+""+prime_set[j]);
                int t6= Integer.parseInt(prime_set[j]+""+prime_set[k]);
                if(!prime[t3]||!prime[t4]||!prime[t5]||!prime[t6]){
                    continue;
                }
                for(l=k+1; l<len; l++){
                    int t7= Integer.parseInt(prime_set[i]+""+prime_set[l]);
                    int t8= Integer.parseInt(prime_set[l]+""+prime_set[i]);
                    int t9= Integer.parseInt(prime_set[l]+""+prime_set[j]);
                    int t10= Integer.parseInt(prime_set[j]+""+prime_set[l]);
                    int t11= Integer.parseInt(prime_set[k]+""+prime_set[l]);
                    int t12= Integer.parseInt(prime_set[l]+""+prime_set[k]);
                    if(!prime[t7]||!prime[t8]||!prime[t9]||!prime[t10]||!prime[t11]||!prime[t12]){
                        continue;
                    }
                    for(m=l+1; m<len; m++){                     
                        int t13= Integer.parseInt(prime_set[i]+""+prime_set[m]);
                        int t14= Integer.parseInt(prime_set[m]+""+prime_set[i]);
                        int t15= Integer.parseInt(prime_set[m]+""+prime_set[j]);
                        int t16= Integer.parseInt(prime_set[j]+""+prime_set[m]);
                        int t17= Integer.parseInt(prime_set[k]+""+prime_set[m]);
                        int t18= Integer.parseInt(prime_set[m]+""+prime_set[k]);
                        int t19= Integer.parseInt(prime_set[m]+""+prime_set[l]);
                        int t20= Integer.parseInt(prime_set[l]+""+prime_set[m]);
                //      System.out.println("i:"+prime_set[i]+",j:"+prime_set[j]+",k:"+prime_set[k]+",l:"+prime_set[l]+",m:"+prime_set[m]);
                        System.out.println("No:i:"+i+",j:"+j+",k:"+k+",l:"+l+",m:"+m);
                        if(!prime[t13]||!prime[t14]||!prime[t15]||!prime[t16]||!prime[t17]||!prime[t18]||!prime[t19]||!prime[t20]){

// int sum = prime_set[i]+prime_set[j]+prime_set[k]+prime_set[l]+prime_set[m];
// System.out.println("----------i:"+prime_set[i]+",j:"+prime_set[j]+",k:"+prime_set[k]+",l:"+prime_set[l]+",m:"+prime_set[m]+",sum:"+sum);
// System.out.println("--No:i:"+i+",j:"+j+",k:"+k+",l:"+l+",m:"+m);
continue;
}else{
int sum = prime_set[i]+prime_set[j]+prime_set[k]+prime_set[l]+prime_set[m];
System.out.println("----------i:"+prime_set[i]+",j:"+prime_set[j]+",k:"+prime_set[k]+",l:"+prime_set[l]+",m:"+prime_set[m]+",sum:"+sum);

}
}
}
}
}
}
System.out.println("i:"+i+",j:"+j+",k:"+k+",l:"+l+",m:"+m);
}
}
[/code]

打印出来的:
No:i:0,j:1,k:2,l:141,m:166
No:i:1,j:2,k:27,l:120,m:121



No:i:7,j:62,k:121,l:142,m:165
No:i:7,j:62,k:121,l:142,m:166
i:167,j:167,k:167,l:167,m:167

怎么i都不是按顺序的遍历啊~
崩溃了

  • 写回答

3条回答 默认 最新

  • AngelAndAngel 2011-08-28 16:00
    关注

    continue的意思就是 中断本次循环,继续下一次循环,举个简单例子更容易理解:

    [code="java"]
    for(int i=0;i<10;i++){
    for(int k=0;k<20;k++){
    System.out.println("start");
    if(k==5){
    continue;
    }
    System.out.println("end");

    }
    }
    [/code]

    这段代码的意思就是:当k=5的时候,中断本次循环,也就是说不会打出end这个字符串,然后继续循环k=6的时候。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址