2,3,5,7,11,13,…是素数序列。类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,
叫等差素数数列。上边的数列公差为 30,长度为 6。2004 年,格林与华人陶哲轩合作证明
了:存在任意长度的素数等差数列。这是数论领域一项惊人的成果!有这一理论为基础,
请你借助手中的计算机,满怀信心地搜索:长度为 10 的等差素数列,其公差最小值是多
少?注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。
打表的时候数组开大一点
#include <stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int prim[N],book[N];
void prime()
{
// int k=0;
memset(book,0,sizeof(book)); //数组开大一点
book[1]=1;
for(int i=2; i<=N; i++)
{
if(!book[i])
for(int j=i*2; j<=N; j+=i)
{
book[j]=1;
}
}
}
int main()
{
int flag=0,d,i,k;
prime();
for( d=2; d<=1000; d++) //枚举公差
{
//flag=0;
for(i=2; i<=1000; i++) //枚举首项
{
// flag=0;
if(!book[i]&&!book[i+d]&&!book[i+2*d]&&!book[i+3*d]&&!book[i+4*d]&&!book[i+5*d]&&!book[i+6*d]&&!book[i+7*d]&&!book[i+8*d]&&!book[i+9*d])
{
// flag=1;
printf("%d\n",d);
return 0;
}
}
}
return 0;
}
答案 210