题目描述
2,3,5,7,11,13,.... 是素数序列。 类似: 7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为 6
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为 10的等差素数列,其公差最小值是多少?
解题思路
1.首先先定义一个方法chose来判断这个数是否为素数
2.这个方法的核心代码是for循环,定义初值为num-1,最后一个值为2,然后通过if筛选是否除了本身和1外的数可以整除
3.在主方法中用双层嵌套for,第一层循环是设置初值,小于10000的数,从1开始,第二层for循环是设置公差,从1开始
4.双层for循环中定义k来作为素数数列的长度,用if判断没经过方法的数则取消,当k的长度达到10之后则可以输出最大的公差值j,最后用return停止方法
public class Main {
public static void main(String[] args) {
for(int i=1;i<10000;i++){
for(int j=1;j<1000;j++){
int k;
for(k=0;k<=10;k++){
if(!chose(i+j*k)){
break;
}
}
if(k==10){
System.out.println(j);
return;
}
}
}
}
public static boolean chose(int num){
for(int i=num-1;i>1;i--){
if(num%i==0){
return false;
}
}
return true;
}
}