等差素数列
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
2,3,5,7,11,13,....
是素数序列。 类似:7,37,67,97,127,157
这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为 30
,长度为 6
。
2004
年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为 10
的等差素数列,其公差最小值是多少?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
记录题解
题解一(在题解区看到的)
题解二(暴力枚举)
package com.xiang.lanqiao;
/**
* @author snape
* @create 2022-04-01 15:18
*/
public class ArithmeticPrimes {
//此方法为判断是否为素数
public static boolean isPrimes(int i){
for(int j = 2;j <= Math.sqrt(i);j++){ //j:被i去除
if(i % j == 0){ //i被j除尽
return false;
}
}
return true;
}
public static void main(String[] args) {
int num = 2; //最小的素数为2
int ans = 0;
boolean flag = true;
while (flag){
if (isPrimes(num)){
for (int i = 1; i < 1000; i++) { // 设置公差i
int count = 1;
for (int j = num+i; j < 10000; j=j+i) { //设置数j以公差i递增
if (isPrimes(j)){ //如果此数是素数
count++;
if (count == 10){ //长度为十结束
ans = i;
flag = false;
break;
}
}else {
break;
}
}
}
}
num++;
}
System.out.println(ans);//210
}
}