您的位置:首页 > 编程语言 > Java开发

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

2016-04-25 13:17 681 查看
问题描述:

类似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;   		//返回该数组
}

}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: