Sataeaaad 2020-12-02 23:07 采纳率: 33.3%
浏览 21
已采纳

求全素组,我是个小菜鸡,目前正努力学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条)

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)