您的位置:首页 > 其它

第八届蓝桥杯省赛B组之等差素数列

2018-02-21 03:21 239 查看
标题:等差素数列2,3,5,7,11,13,....是素数序列。类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。上边的数列公差为30,长度为6。2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10的等差素数列,其公差最小值是多少?注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。 
分析问题:
这里需要解决的问题有两个,1.等差数列的差是多少 2.十个等差数都是素
很明显,用双重循环,一重循环遍历差,一重循环遍历数列的项,当数列的项满足十个且都为素数时,结束循环
这里没有给我们素数的范围,我们可以自己设一个,差也一样,如果在这个范围没有结果,可以扩大范围
#include<iostream>
using namespace std;
bool isPrime(int n);
int main(void) {
int d;
int n;
for (d = 1; d <=1000;d++) {
for (n = 1; n <=1000;n++) {
if (isPrime(n)
&&isPrime(n+d)
&&isPrime(n+d*2)
&&isPrime(n+d*3)
&&isPrime(n+d*4)
&&isPrime(n+d*5)
&&isPrime(n+d*6)
&&isPrime(n+d*7)
&&isPrime(n+d*8)
&&isPrime(n+d*9)) {
cout << d<<endl;
system("pause");
return d;

}
}
}
return 0;
}
bool isPrime(int n) {
int i;
if (n == 1) {
return false;
}
if (n==2) {
return true;
}
for (i = 2; i < n;i++) {
if (n%i == 0) {
return false;
}
}
if (i==n) {
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: