2017蓝桥杯C++B:等差素数列(枚举优化)
二、题目:等差素数列
2,3,5,7,11,13,….是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为10的等差素数列,其公差最小值是多少?
注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。
分析思路:
常见素数列:2,3,5,7,11,13,17,19,23…
枚举法
枚举首项:a[i]
枚举公差: 1 2+3=5可以,3+5=8不符合
2
3
…
公差的极限是最后数列最后一项-首项
公差max-a[i],在每个公差过程中累加还要枚举个数
从头到尾找10个代码:
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;typedef long long LL;
set<int>all;
bool isPrime(LL t){for(int i=2;i<t/2;i++){ //除2或者开更号 if(t%i==0) //能否被整除,判断是否为素数 return false;}return true;
}
int f(LL a[],int n){ //把5000长度存储 ,已经是素数的数列中,找等差的素数列 for(int i=0;i<n;i++){ LL first=a[i]; //首项 for(int delta=1;delta<a[n-1]-first;delta++){ //delta枚举公差,考虑极限最大的减第一个 int m=first; //考虑首相 for(int j=1;j<10;j++){ //从首相开始加9次,若全为素数,则成功 m+=delta; //j每走一次,m加一次delta if(all.find(m)==all.end()) //,找不到m不是素数 break;if(m>a[n-1]) break; //m超出范围 if(j==9) //已经找到第10项return delta; } }} return -1; //中间未找到
}
const int N=5000; //目前先定为找到5000
LL a[N]; //素数列
int main(){a[0]=2; //第一个素数 a[1]=3; //第二个素数 all.insert(2); //2all.insert(3); //3int index=2;LL t=5; //a【0】+a【1】=5 while(index<N){if(isPrime(t)){ //如果是素数 a[index++]=t; //找到素数填到数组中 all.insert(t);}t++;}cout<<f(a,N)<<endl;return 0;
}
答案:210
2017蓝桥杯C++B:等差素数列(枚举优化)相关推荐
- 2017年蓝桥杯省赛 等差素数序列(暴力循环)
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可.2,3,5,7,11,13,....2,3,5,7,11,13,.... 是素数序列. 类似:7,37,67,97,1 ...
- 2017蓝桥杯等差素数(C++B组)
题目 : 等差素数列 2,3,5,7,11,13,....是素数序列. 类似:7,37,67,97,127,157 ...
- 【Code Pratice】—— 等差素数列、错误票据、神奇算式
文章目录 1 | 等差素数列 题目 思路 逻辑代码 2 | 错误票据 题目 思路 逻辑代码 3 | 神奇算式 题目 思路 逻辑代码 1 | 等差素数列 题目 2,3,5,7,11,13,-是素数序列. ...
- 2017蓝桥杯省赛C++B组真题与题解
A:购物单 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦 ...
- 2017蓝桥杯java B组纸牌三角形
2017蓝桥杯java B组纸牌三角形 1.标题:纸牌三角形 A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算).要求每个边的和相等. 下图就是一种排法 A 9 6 4 8 ...
- [蓝桥杯2017初赛]等差素数列-巧妙枚举(思维)
题目描述 2,3,5,7,11,13,-是素数序列. 类似:7,37,67,97,127,157 这样全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年,格林与华人 ...
- 等差素数列--蓝桥杯
题目描述: 2,3,5,7,11,13,-是素数序列. 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年,格林与 ...
- 等差素数列(素数筛暴力)
标题:等差素数列 2,3,5,7,11,13,-是素数序列. 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年, ...
- 第八届蓝桥杯第二题等差素数列
标题:等差素数列 2,3,5,7,11,13,....是素数序列. 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 200 ...
最新文章
- Jsp页面中使用fckeditor控件的两种方法
- 亿级商品详情页架构演进技术解密 | 高可用架构系列 二
- 共享服务器设置权限修改,共享服务器权限设置
- 设计模式系列之----观察者模式
- TCP通信之获取本机IPV4地址
- python可以处理哪些文件_Python(文件处理)
- DVD-Cloner 2021 for mac(DVD光盘刻录工具)
- RegeX版本更新至2.0.0.4 加入英文语言包
- 单片机python教程推荐_有Python基础的小白如何学习单片机?
- 解析双稳态肖特基二极管的设计
- World Development Indicators(世界发展指标相关数据集)
- Flyme将在明年“上车”?沈子瑜接棒魅族董事长后称将与华为展开竞争
- 在MacBook Pro上装Mac和Linux双系统
- iOS - 接入 Live2D
- 如何打造高绩效的研发团队
- 当APO生产订单报工遇到物料账期没开
- c语言 的表示方法,c语言运算符号的表示方法
- 设置IP代理错误:“[WinError 10061] 由于目标计算机积极拒绝,无法连接”解决办法
- linux kernel -- oops场景奈何桥
- ROT13 - 维基百科,自由的百科全书