題目如下:
標題:等差素數列
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;
}
}
}
}
}
}