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条)

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler