蓝桥杯2017 C/C++B组
等差素数列
【题目描述】
2,3,5,7,11,13,…是素数序列。 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。 2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索: 长度为10的等差素数列,其公差最小值是多少?
注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。
【题目分析】
暴力枚举
#include <iostream>
using namespace std;
bool isPrime(int n)
{
for (int i = 2; i < n; i++)
if (n % i == 0)
return false;
return true;
}
int main()
{
int k,m;
int length;
for (int i = 2; i <= 10000; i++){
if (isPrime(i)){
for (k = 1; k <= 1000; k++){
length = 1;//首项已经是素数了 个数加1
m = i;
while (length){
m+=k;
if (isPrime(m)){
length++;
if (length == 10){
cout << k << endl;
return 0;
}
}
else
break;
}
}
}
}
return 0;
}
结果: