蓝桥杯05
Posted Respect@
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯05相关的知识,希望对你有一定的参考价值。
/*
标题:等差素数列
2,3,5,7,11,13,....是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为10的等差素数列,其公差最小值是多少?
注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。
*/
#include <algorithm>
#include <iostream>
#include <set>
using namespace std;
typedef long long LL;
set<int>all;
bool isPri(LL t)
for(int i=2;i<t/2;++i)
if(t%i==0)return false;
return true;
int f(LL a[],int n)
for(int i=0;i<n;++i)//枚举首相
LL first = a[i];
for(int delta=1;delta<a[n-1]-first;++delta)//枚举公差
int m=first;
for(int j=1;j<10;++j)
m+=delta;
if(all.find(m)==all.end())//m不是素数 因为找不到
break;
if(m>a[n-1])break;
if(j==9 )//已经找到10项
return delta;
return -1;
int main()
a[0]=2;
a[1]=3;
all.insert(2);
all.insert(3);
int index = 2;
LL t=5;
while(index<N)
if(idPrime(t))
a[index++]=t;
all.insert(t);
t++;
cout<<f(a,N)<<endl;
以上是关于蓝桥杯05的主要内容,如果未能解决你的问题,请参考以下文章