问题描述
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);}}打印出来的:No:i:0,j:1,k:2,l:141,m:166No:i:1,j:2,k:27,l:120,m:121。。。No:i:7,j:62,k:121,l:142,m:165No:i:7,j:62,k:121,l:142,m:166i:167,j:167,k:167,l:167,m:167怎么i都不是按顺序的遍历啊~崩溃了
解决方案
continue的意思就是 中断本次循环,继续下一次循环,举个简单例子更容易理解: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");}}这段代码的意思就是:当k=5的时候,中断本次循环,也就是说不会打出end这个字符串,然后继续循环k=6的时候。
解决方案二:
continue指结束当前1次循环的继续执行,计数器步进,循环操作继续。如下 for ( int i = 0; i < 10 ; i++){ … //statements if( i == 3) continue; … //other statements } 当条件i == 3成立后other statements将不会再执行,而是i步进后跳回到for循环继续往下执行break指结束当前所有循环,并且循环计数器不再步进,如下for ( int i = 0; i < 10 ; i++){ … //statements if( i == 3) break; … //other statements } … //outer statements 当条件i == 3成立后,跳出for循环往下执行outer statements,并且i不再步进,维持3不变,这个地方类似于return的作用。另外break和continue只能作用于最内层循环,即如果多层嵌套的话,对外层循环不起作用。break和continue只用于for、while、do…while、switch语句,其他地方都不能使用,且二者的使用是为了能简化程序,如果使用后程序反而复杂化就要考虑改用其他实现了。
解决方案三:
它不会中断外层的循环,只是中断了内层的循环中k=5的那次循环,然后紧接着k变成6,然后开始打印start,end 一直继续。lz应该明了了哦。