题目如下:
标题:等差素数列
2,3,5,7,11,13,….是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
这是数论领域一项惊人的成果!
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为10的等差素数列,其公差最小值是多少?
注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。
take notes:
三层循环,第一层遍历公差,第二层遍历首项,第三层遍历数列内部,停止条件是cnt=10,当然还要有素数筛选法
public class Main {
static int N = 2000000;
static int[] vis = new int[N];
static void pri(){
vis[0]=vis[1]=1;
for(int i=2;i<N;i++){
if(vis[i]==0){
for(int j=i+i;j<N;j+=i){
vis[j]=1;
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
pri();
int j=0;
int cnt=0;
main:for(int gc=1;gc<1000;gc++){
for(int i=1;i<N-1001;i++){
j=i;
if(vis[i]==0){
while(cnt<10){
if(vis[j]==0){
cnt++;
j=j+gc;
}
else{
cnt=0;
break;
}
}
if(cnt==10){
System.out.println(gc);
break main;
}
}
}
}
}
}