public class SuShu {
public static void main(String[] args) {
/*
* 思路:
* 先把10万以内的素数找出来;
* 然后挨个遍历,以每一个素数为开头的等差数列,
* 暴力遍历所有的差值1000以内即可
* 然后统计等差数列的长度,达到10就保存差值,全局保存最小的那个。
* 最后输出即可
* */
int n =1000100;
//埃氏筛晒出n以内的所有素数
boolean[] numbers = new boolean[n+1];
for (int i =2 ; i <= n;i++) {
if(!numbers[i]){
int temp = i+i;
while(temp<=n){
numbers[temp] = true;
temp +=i;
}
}
}
//以k为开头的等差数列
int min = Integer.MAX_VALUE;
for (int k =2 ; k <= n; k++) {
if(!numbers[k]){//是素数才进行计算
for (int i =3; i <= 10000; i++) {//遍历所有的差值
int count = 0;//统计等差数量长度
int temp = k;
while (temp<=n&&!numbers[temp]){
temp +=i;
count++;
if(count==10){
min = Math.min(min,i);
}
}
}
}
}
System.out.println(min);
}
}
0 回复
0 转发
0 喜欢
4 阅读



