标题:等差素数列

2,3,5,7,11,13,....是素数序列。

类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。

上边的数列公差为30,长度为6。

2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。

这是数论领域一项惊人的成果!

有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:

长度为10的等差素数列,其公差最小值是多少?

注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。

解题思路:

素数筛打表+暴力

素数筛:

https://blog.csdn.net/stack_queue/article/details/53560887

https://blog.csdn.net/stack_queue/article/details/53560887

https://blog.csdn.net/stack_queue/article/details/53560887

求素数是程序设计比赛中经常遇到的问题,最基本的方法是通过素数的定义直接判断,只能被1和它本身整除的数就是素数了。这种方法适合判断单个数是否为素数,当要求一个范围内素数而这个范围又比较大时,这种方法就不太使用了,甚至程序要运行几分钟才能算出结果。

筛法的思想是去除要求范围内所有的合数,剩下的就是素数了,而任何合数都可以表示为素数的乘积,因此如果已知一个数为素数,则它的倍数都为合数。

普通的线性筛法:

#include"cstdio"

#include"cstring"

usingnamespacestd;

#define MAX 100000//求MAX范围内的素数

longlongsu[MAX],cnt;

boolisprime[MAX];

voidprime()

{

cnt=1;

memset(isprime,1,sizeof(isprime));//初始化认为所有数都为素数

isprime[0]=isprime[1]=0;//0和1不是素数

for(longlongi=2;i<=MAX;i++)

{

if(isprime[i])//保存素数

{

su[cnt++]=i;

}

for(longlongj=i*2;j<=MAX;j+=i)//素数的倍数都为合数

{

isprime[j]=0;

}

}

}

intmain()

{

prime();

for(longlongi=1;i

printf("%d  ",su[i]);

return0;

}

普通的线性筛法虽然大大缩短了求素数的时间,但是实际上还是做了许多重复运算,比如2*3=6,在素数2的时候筛选了一遍,在素数为3时又筛选了一遍。如果只筛选小于等于素数i的素数与i的乘积,既不会造成重复筛选,又不会遗漏。时间复杂度几乎是线性的。

优化后的线性筛法:

#include"cstdio"

#include"cstring"

usingnamespacestd;

#define MAX 100000//求MAX范围内的素数

longlongsu[MAX],cnt;

boolisprime[MAX];

voidprime()

{

cnt=1;

memset(isprime,1,sizeof(isprime));//初始化认为所有数都为素数

isprime[0]=isprime[1]=0;//0和1不是素数

for(longlongi=2;i<=MAX;i++)

{

if(isprime[i])

su[cnt++]=i;//保存素数i

for(longlongj=1;j

{

isprime[su[j]*i]=0;//筛掉小于等于i的素数和i的积构成的合数

}

}

}

intmain()

{

prime();

for(longlongi=1;i

printf("%d  ",su[i]);

return0;

}

另:

memset只能把数组初始化为-1或0(字符数组可以初始化为'a''b''c'...)

所以下面的代码中 0表示是素数,1表示不是素数

代码:

#include

#include

int prime[100010],p[100010],len=0;

void isp()

{

memset(p,0,sizeof(p));

p[0]=1;p[1]=1;//0是素数1不是素数

for(int i=0;i<10000;i++)

{

if(p[i]) continue;

for(int j=i;j*i<10000;j++) //任何合数都可以表示为素数的乘积

{

p[i*j]=1;//如果已知一个数为素数,则它的倍数都为合数

}

prime[len++]=i;

}

}

int main()

{

isp();

for(int i=0;i

{

printf("%d ",prime[i]);

}

printf("\n");

for(int i=0;i<10000;i++)

{

int x=prime[i];

for(int c=1;c<1000;c++)

{

int j;

for(j=1;j<10;j++)

{

if(p[x+c*j]) break;

}

if(j>=10)

{

printf("%d %d\n",c,x);

return 0;

}

}

}

return 0;

}

蓝桥杯质数c语言,2017年第八届蓝桥杯C/C++程序设计本科B组省赛 等差素数列(结果填空)(素数筛)...相关推荐

  1. 2015年第六届蓝桥杯C/C++程序设计本科B组省赛 星系炸弹(日期推算)

    星系炸弹 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2 ...

  2. 第三届蓝桥杯C/C++程序设计本科B组省赛题解

    1.微生物增殖** 题目: 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍). 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1 ...

  3. 2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - C. 魔方状态

    2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - C. 魔方状态 魔方状态 二阶魔方就是只有2层的魔方,只由8个小块组成. 小明很淘气,他只喜欢3种颜色,所有把家里的二阶魔方重新涂了颜色, ...

  4. 2017年 第八届蓝桥杯 Java B组真题整理

    2017年 第八届蓝桥杯 Java B组真题整理 1.购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞.这不,XX大促销又 ...

  5. 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 拼音字母(编程大题)

    2012年第三届蓝桥杯C/C++程序设计本科B组决赛题目汇总: http://blog.csdn.net/u014552756/article/details/51399827 拼音字母 在很多软件中 ...

  6. 2017年第八届蓝桥杯省赛B组 C/C++

    2017.4.8,第八届蓝桥杯初赛,时隔一月多,才写个题解,贼尴尬...这学期竞赛多,PAT,天梯赛初决赛,蓝桥杯初决赛,ACM省赛,加上课程也多,真是累成狗了,蓝桥初赛后就一直学习课程,和小伙伴一起 ...

  7. 2017年第八届蓝桥杯C/C++ B组省赛历年真题及解析

    默认阅读的你具备c/c++基本语法,作者对每一题点明需要掌握的算法策略或思想,并进行简单注释解释: 该博客的正确食用方式:简单了解点明的算法思想和策略,再自行思索之后自己写代码,提交不过再看看别人的代 ...

  8. 2017年第八届蓝桥杯JavaB组省赛 刷题笔记、思路及答案

    前言 本人是二本院校大二的计算机系学生,已经报名了下一届的蓝桥杯省赛,整个寒假在家(这次的寒假挺久的哈哈)在b站学习了一些算法(现在会bfs走迷宫.dfs相关算法.递归回溯.常见排列算法),但是还是有 ...

  9. 2017年第八届蓝桥杯省赛题目python解答(更新中)

    目录 1. 迷宫 2. 跳蚱蜢 3. 魔方状态 4. 方格分割 5. 正则表达式 6. 包子凑数 ·· 1. 迷宫 思路:使用暴力的方法来求解,对于每一个玩家,计算他能否走出去.对于一些走不出去的玩家 ...

  10. (2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第八题包子凑数)

    第八题 题目 标题:包子凑数 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖 ...

最新文章

  1. 【译】使用Kotlin和RxJava测试MVP架构的完整示例 - 第1部分
  2. 解决Ubuntu中sublime无法输入中文的问题
  3. 冲击SuperGLUE:基于多任务与对抗训练的Finetune方案解析
  4. 【Linux系统编程】Linux文件操作
  5. 智能机器人建房子后房价走势_人工智能未来10年将颠覆房地产行业,你还敢买房吗?...
  6. java多对多关系实例_【Java一对多关系实例公布,你的Java真的可以玩的这么好吗】- 环球网校...
  7. python简明教程_04
  8. 5G和北斗,交通行业新基建的正确打开方式
  9. Cavium OCTEON网络处理器的安全性能
  10. camera成像能力-清晰度(Resolution,Sharpen)
  11. WINVNC源码分析(四)-vnchooks
  12. android的权限一览表和RGB颜色对照表
  13. 像诗人一样睿智,像天才一样疯狂
  14. 2020数学建模参加后感想
  15. 电脑处理器多核心好还是高频率好?
  16. 【Python3】中str方法汇总
  17. Android基础教程(二)之五大布局对象---FrameLayout,LinearLayout ,AbsoluteLayout,RelativeLayout,TableLayout.
  18. Java 多线程编程 实验题
  19. java cookie实现登录状态_java无状态登录实现方式之ThreadLocal+Cookie
  20. 8 .数据库-查-高级查询

热门文章

  1. linux系统发育树的构建步骤,使用modeltest-ng和raxml-ng构建ML系统发育树
  2. vue项目引入iconfont图标
  3. 扫码枪回车键条码_收银系统中扫描枪扫描条码后必须按回车键才能查询商品的解决办法...
  4. 计算机的网络技术说课稿模板,精选信息技术说课稿模板汇编五篇
  5. 5S现场管理之车间现场标准化管理的六大执行要点
  6. 基于matlab使用Windrose函数绘制风矢量分布图(风玫瑰图)
  7. 多媒体计算机技术2017年四月,自考软件工程:2017年10月07167多媒体计算机技术历年真题及答案...
  8. Win10下ImageAI-gpu训练自己的数据集
  9. QODBC查询Oracle中文乱码问题
  10. python box2d模拟平抛运动_[HTML5]使用Box2dWeb模拟飞行箭矢