admin管理员组文章数量:1794759
第八届蓝桥杯C/C++省赛题:2,3,5,7,11,13,....是素数序列。 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。 上边的数列公差为30……
题目:
标题:等差素数列
2,3,5,7,11,13,…是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为10的等差素数列,其公差最小值是多少?
注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。
思路:
- 首先要建立一个检验素数的函数,如果是素数返回1,不是返回0。
- 其次确定一个寻找素数的范围,我这里设定的是1~10000,然后设定一个公差的范围,我这里设置的是1~10000。(这个范围是可以输出正确的结果的)
- 使用两层for循环嵌套一下即可。
- 这里有一个问题,就是如果设定的素数范围不够或者公差范围不够的办法,这个其实很好解决,直接把输出和return 0;放在循环里就可以了,如果有结果就输出,没有结果就说明范围不够,重新更改一下范围就好了。
代码:
(使用clang++编译通过)
#include<iostream>
using namespace std;
int isPrime(int n)
{for(int i=n-1;i>1;i--){if(n%i==0)return 0;}return 1;
}
int main()
{int i,j;for(i=1;i<10000;i++){for(j=1;j<1000;j++){if(isPrime(i)&&isPrime(i+j)&&isPrime(i+2*j)&&isPrime(i+3*j)&&isPrime(i+4*j)&&isPrime(i+5*j)&&isPrime(i+6*j)&&isPrime(i+7*j)&&isPrime(i+8*j)&&isPrime(i+9*j)){cout<<j<<endl;return 0;}}}return 0;
}
结果为210
本文标签: 第八届蓝桥杯CC省赛题235711
版权声明:本文标题:第八届蓝桥杯CC++省赛题:2,3,5,7,11,13,....是素数序列。 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。 上边的数列公差为30…… 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1695210260a296362.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论