趣味素数-等差素数数列-java

问题描述:

类似7,37,67,97,107,137,167,197这样由素数组成的数列叫做等差素数数列。素数数列具有项数的限制,一般指素数数列的项数有多少个这样的连续项,最多可以存在多少个连续项。

编程找出100以内的等差数列。


import java.util.ArrayList;

public class Main {
	
public static void main(String[]Args){  
	ArrayList alist = new ArrayList(100);		
	alist = getPrimeNum(100);
	ArrayList alist2 = getSl(alist);			//获取1~100内的素数  存放到数组中
	for(int i=0 ; i<alist2.size() ; i++){		//循环遍历输出数组元素
		System.out.println(alist2.get(i));
	}
	
}
	
public static ArrayList getPrimeNum(int a){	//获取制定范围内的素数
	ArrayList alist = new ArrayList(100);
	for(int i=2 ; i<=a ; i++){
		if(isPrimeNum(i)){
			alist.add(i);
			
		}
	}
	return alist;
}


public static boolean isPrimeNum(int num){		//素数的判断方法
	for(int j=2 ; j<=(int)Math.sqrt(num) ; j++){
		if(num%j==0){
			return false;
		}
	}
	
	return true;
}


public static ArrayList getSl(ArrayList alist){			//获取指定数列中的素数等差数列
	int diff = 0;			//公差数
	int listNum = 0;		//等差数列中的最后一个数字
	
	ArrayList alist3 = new ArrayList();		//存放等差数列 的数组   以等差数列为元素
	for(int i=0 ; i<=alist.size()-3 ; i++){				//遍历素数数组
		for(int j=i+1 ; j<=alist.size()-2 ; j++){
			diff = (int)alist.get(j)-(int)alist.get(i);		//算公差
			listNum = (int)alist.get(j)+diff;		//求三个数
			if(alist.contains(listNum)){
				ArrayList alist2 = new ArrayList();
				alist2.add(alist.get(i));
				alist2.add(alist.get(j));
				alist2.add(listNum);
				
				
				for(int i2=alist.indexOf(listNum)+1 ; i2<alist.size() ; i2++){			//判断后面的数字能不能和前面的数字构成等差数列
					if((int)alist.get(i2)-listNum==diff){
						alist2.add(alist.get(i2));
						listNum = (int) alist.get(i2);
					}
					
				}
				alist3.add(alist2);				//如果能的话  添加到数组中
				
				
			}
		
		}
		
		
	}
	
	return alist3;   		//返回该数组
}

}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值