素數:只能被1與自己整除的整數。算法
1和0不是素數,也不是合數數組
不大於指定整數n的3個素數之和也是素數,則說這三個素數時基於整數n的全素組code
例如:n=15,素數3,5,11之和3+5+11=29也爲素數,因此稱3,5,11是一個基於15的全數組blog
輸入一個整數n(n不大於3000),輸出基於n的全素組的個數,並輸出最大全素組變量
Scanner scaner = new Scanner(System.in); int a = scaner.nextInt(); scaner.close(); int[] b = new int[1500]; long count =0;//全素組個數 int countsushu=0;//0~n的素數個數 //找出0到a的素數,存放在b數組中 for(int i=2,j=0;i<=a;i++){ if(panduan(i)){ b[j] = i; countsushu++; j++; } } int max=0; int c1=0,c2=0,c3=0; for(int i=1;i<=countsushu-2;i++){ for(int j=i+1;j<=countsushu-1;j++){ for(int k=j+1;k<=countsushu;k++){ if(panduan(b[i]+b[j]+b[k])){ count= count+1; if(b[i]+b[j]+b[k]>max){ c1=b[i]; c2=b[j]; c3=b[k]; max = b[i]+b[j]+b[k]; } } } } } System.out.println("共有" + count+"個全素組"); System.out.println("一個最大全素組爲:"+c1+"+"+c2+"+"+c3+"="+max); } /** * * @param a * @return 經過試商法判斷a是否爲素數 */ public static boolean panduan(int a){ int s = (int)Math.sqrt(a); for(int i=2;i<=s;i++){ if(a%i==0){ return false; } } return true; }