Sataeaaad
2020-12-02 23:07
采纳率: 25%
浏览 19
已采纳

求全素组,我是个小菜鸡,目前正努力学java中,求帮忙看一下我写的代码,秋梨膏~

import java.util.ArrayList;
import java.util.List;

public class ShuZu {

	public static void main(String[] args) {
		
	
		long[] a=new long[1000];
		List numList = new ArrayList();
		
		int w=numList.size();//获取素数的个数
		int index = 0;
		Integer d[] = new Integer[numList.size()];
		for(int i=3;i<=a.length;i++) {
			boolean r=true;
			for(int j=3;j<i;j++) {
				if(i%j==0) {
					r=false;
					break;
				}
				
			}
			if(r){
				numList.add(i);
				for( int c = 0; c < numList.size(); c++ ) {
					d[index] = (Integer) numList.get(c);//将得到的素数传入d[]数组
					index++;
				}
			}
		}
		for (int i1 = 1; i1 <= w - 2; i1++) {
			for (int j = i1+1; j <= w - 1; j++) {
				for (int k = j + 1; k <= w; k++) {
				
					int sum = (int) (d[i1] + d[j] + d[k]);//得到素数和
					 
					
					for(int b=2;b<sum;b++) {//判断sum是不是素数
						boolean g=true;
						if(sum%b==0) {
							g=false;
							break;
						}else if(g){
							System.out.println(d[i1]+" "+d[j]+" "+d[k]);//输出全素组
						}
					}
			
		
	}
			}
	
			}
		
	}
}

出错在  d[index] = (Integer) numList.get(c);

输出结果是

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at ShuZu.main(ShuZu.java:29)

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_25376897 2020-12-03 09:45
    已采纳
    public class ShuZu {
        public static void main(String[] args) {
            int[] a = new int[1000];//记录素数
            int i,j,k,m=0;
            for(i=2;i<=1000;i++){
                if(isPrimeNumber(i)){
                    a[m++]=i;
                }
            }
            //此时m就是素数的个数
            //数组的下标从0开始
            for(i=0;i<m-2;i++){
                for(j=i+1;j<m-1;j++){
                    for(k=j+1;k<m;k++){
                        if(isPrimeNumber(a[i]+a[j]+a[k])){
                            System.out.println(a[i] + " " + a[j] + " " + a[k]);
                        }
                    }
                }
            }
        }
    
        /**
         * 判断是否为素数
         * @param a
         * @return
         */
        public static boolean isPrimeNumber(int a){
            int s = (int)Math.sqrt(a);
            for(int i=2;i<=s;i++){
                if(a%i==0){
                    return false;
                }
            }
            return true;
        }
    }
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题