**题目:**2,3,5,7,11,13,….是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
长度为10的等差素数列,其公差最小值是多少?
解题思维:
暴力破解 枚举法! 根据等差数列的通项公式:an=a1+(n-1)*d,可使用两重循环分别枚举数列的第一项a1和公差d,对每一项都需进行素数判定。
代码如下
package prepare;
public class dengchasushu {
// 长度为10的等差素数列,其公差最小值是多少?
//是否为素数
static boolean isPrime(int n){
boolean flag = true;
for(int i=2;i<=Math.sqrt(n);i++){
if(n%i==0){
flag = false;
}
}
return flag;
}
//是否为等差数列 用双重循环 暴力寻找首项和方差
public static void main(String[] args) {
// 等差素数
for(int i=0;i<10000;i++){
if(isPrime(i)){
for(int j=1;j<10000;j++){
if(isPrime(i+j) && isPrime(i+2*j) && isPrime(i+3*j) && isPrime(i+4*j) && isPrime(i+5*j) && isPrime(i+6*j) && isPrime(i+7*j) && isPrime(i+8*j) && isPrime(i+9*j)){
System.out.println("公差为:"+j);
break;
}
}
}
}
}
}