标题:等差素数列2,3,5,7,11,13,....是素数序列。类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10的等差素数列,其公差最小值是多少?注意:需要提交的是一个整数,
不要填写任何多余的内容和说明文字。
#include <iostream>
#include <string>
#include<stdlib.h>
#include<cmath>
#define N 10000
using namespace std;
int main(){
int sunum[N]={0};
bool IsSuShu(int);
int k=0;
for(int i=2;i<=N;i++)
{
if(IsSuShu(i))
{
sunum[k++]=i;
}
}
for(int i=1;i<300;i++)
{
int last,next;
for(int j=0;j<=N;j++)
{
int index=1;
last=sunum[j];
for(int k=j+1;k<=N;k++)
{
if(sunum[k]-last==i)
{
index++;
last=sunum[k];
}
else if(sunum[k]-last<i)
{
continue;
}else
{
break;
}
}
if(index>=10)
{
cout<<i;
break;
}
}
}
return 0;
}
bool IsSuShu(int a)
{
bool issu=true;
if(a==2||a==1) return true;
for(int i=2;i<=sqrt(a);i++)
{
if(a%i==0)
{
issu=false;
break;
}
}
return issu;
}
评论区