1.题目描述
题目:2,3,5,7,11,13,….是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
长度为10的等差素数列,其公差最小值是多少?
2.思路
需要一个函数 判断素数
还需要满足数列的特点
an=a1+(n-1)d;
比如有n项,但是要保证每一项的项数也是素数(a1,a1+d,a1+2d,…+a1+9d)
本题首项用i 公差是j 所以是保证(i,i+1j,i+2j,i+3j,…,i+9j)都是素数
采用暴力
3.代码实现
public class 等差素数列 {
//某数是否是素数
static boolean isPrime(int n){
for(int i=2;i<=Math.sqrt(n);i++)
{
if(n%i==0)
{
return false;//如果一个数有其他因数,则不是素数
}
}
return true;//否则为素数
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<=100000;i++)
{
if(isPrime(i))
{
for(int j=2;j<=10000;j++)
{
if(isPrime(i)&&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);
}
}
}
}
}
}
4.答案
最小值 210