输出自然数-第10届蓝桥杯国赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第7讲。

输出自然数,本题是2019年5月25日举行的第10届蓝桥杯青少组Python编程国赛真题,题目要求编程根据给定条件按照从小到大的顺序输出10个最小的自然数。

先来看看题目的要求吧。

一.题目说明

编程实现:

按照从小到大的顺序输出符合以下条件的10个最小的自然数:

它们是质数,且被3除余2,且被7除余6,且被11除余10,且被17除余16,且被23除余22。

输入描述:

输出描述:

10行,每行一个符合题目要求的自然数,按从小到大的顺序输出

评判标准:

  • 30分:可以输出第一个符合题目要求的自然数;

  • 50分:完全符合题目要求,即按照从小到大顺序输出了符合题目要求的10个自然数。

二.思路分析

这是一道计算的题目,涉及到的知识点包括循环语句、条件语句、余数运算以及质数的判断。

根据题意,可以将本题拆分成两个问题:

  • 判断质数

  • 余数的判断

首先是质数的判断,关于这部分的知识点,可以参考《包含3的数字-第10届蓝桥杯省赛Python真题精选》这篇文章,其中有详细的介绍。

需要注意的是,由于本题涉及的数字比较大,一定要使用效率更高的方法来判断质数。

余数的判断,则相对要简单多了,只需要使用%运算符即可。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们分两步来编写代码:

  • 定义函数判断质数

  • 输出10个自然数

1. 定义函数判断质数

参考《包含3的数字-第10届蓝桥杯省赛Python真题精选》中的思路分析,定义函数如下:

图片

需要注意的是,这里使用了math库中的ceil()方法,其作用是向上取整。为什么要向上取整呢,原因在于range()函数具备虎头蛇尾(有头无尾)的特点。

当然,你也可以使用int()函数保留整数部分,然后再增加1。

2. 输出10个自然数

有了上面定义的函数,接下来就简单多了,使用循环,找到前10个满足条件的质数即可。但是,我们需要考虑一个问题,可以使用for...in循环吗?

仔细思考,你会发现无法直接确定这10个数字的范围是多少。针对这种情况,可以改用while循环,并使用一个计数器,来记录输出自然数的个数,它可以作为循环的条件。

根据这个思路,编写代码如下:

图片

代码比较简单,但是必须要强调一点,就是判断的写法和顺序。

题目是这么描述的,“它们是质数,且被3除余2,且被7除余6,且被11除余10,且被17除余16,且被23除余22。”

很多同学会自然而然地先判断是否为质数,再判断余数的情况。如果你这么写,那么输出10个自然数需要很长的时间,为什么呢?

原因很简单,由于数字跨度大,判断素数是非常消耗时间的。

所以比较好的方法,是先判断余数情况,再判断是否为质数,这样可以节省很多不必要的判断,极大地提升了效率。

运行程序,执行结果如下:

1083851216770328902713793481433540746966916141827632246970450377225679

至此,整个程序就全部完成了。

四.思考与总结

本题分数为50分,代码在20行左右,涉及到的知识点包括:

  • 循环语句,包括for...in循环和while循环;

  • 条件语句,主要是if语句及嵌套用法;

  • 运算符的灵活使用,包括%和and;

  • 数学函数库的使用;

  • 函数的定义及使用;

题目难度一般,重点有两个,一是质数的判断,二是while循环的灵活运用。这些都是非常基础的Python编程知识,对于大部分同学都没有问题。

真正关键的是,如何提升程序的效率,在蓝桥杯比赛中,对程序运行的时间是有要求,一旦超时,是不能得分的。

所以,我们不仅要把程序写出来,还要想办法写得更好。一定要有优化思维,先保证写出来,然后在此基础上进行优化,提升程序的效率。

比如本题中质数的判断以及自然数的判断,无非都是使用枚举算法逐个处理,那么优化的思路就是能否去掉一些不必要的判断,让枚举的规模降低,从而提升效率。

计算机解决问题其实没有任何特殊技巧,它唯一的解决办法就是枚举,穷举所有的可能性。

而算法设计无非就是:

  • 先思考如何枚举

  • 再追求聪明的枚举

超平老师给你留一个思考题,关于质数(素数)的判断,除了本题中给出的算法,还有效率更高的算法吗,具体是怎么实现的呢?

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/130074.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

可移植性测试包括哪些

可移植性测试 可移植性是指应用程序能够安装到不同的环境中,在不同的环境中使用,甚至可以移动到不同的环境中。当然,前两者对所有系统都很重要。就PC软件而言,鉴于操作系统、共存和互操作应用程序、硬件、带宽可用性等方面的快速变…

Python标准库 subprocess 模块多进程编程详解

1. Subprocess模块介绍 1.1 基本功能 subprocess 模块,允许生成新的进程执行命令行指令,python程序,以及其它语言编写的应用程序, 如 java, c,rust 应用等。subprocess可连接多个进程的输入、输出、错误管道,并且获取它们的返回…

2024世亚国际软件博览会(世亚软博会)国内外知名软件厂商踊跃报名

作为亚洲软件展会的风向标,2024世亚国际软件博览会(简称“世亚软博会”)备受瞩目。近日,从组委会传来消息,目前招商工作已经接近半程,大批国内外软件厂商踊跃报名,展位销售异常火爆。 本届“世亚…

一台电脑使用多个gitee账号,以及提交忽略部分文件

目录 ​编辑 一:前言 二:解决方法 三:提交gitee时忽略文件 一:前言 在开发中,我们拥有不止一个 gitee 账号,通常而言一个是公司的,一个是私人的。有时候我们在公司写了一些自己的东西&#…

C++ set map 的模拟实现

set 的模拟实现 我们在很早之前就提到过,set 的底层数据结构是红黑树。红黑树的实现一般都是 key-value 的结构。但是我们在使用 set 的时候明明只传入了一个模板参数哇!我们来看库中的实现: 我们可以看到,set 的模板参数 Key 就…

深入理解强化学习——多臂赌博机:乐观初始值

分类目录:《深入理解强化学习》总目录 目前为止我们讨论的所有方法都在一定程度上依赖于初始动作值 Q 1 ( a ) Q_1(a) Q1​(a)的选择。从统计学角度来说,这些方法(由于初始估计值)是有偏的。对于采样平均法来说,当所有…

Linux编译器——gcc/g++使用

前言: 在上一篇,我们学习了关于文本编辑器 vim 的全部知识,今天给大家带来的是关于Linux编译器—gcc/使用的详细介绍。 本文目录 (一)温习程序的产生的过程 1、前言 2、程序的产生过程 3、🌜初步认识 gc…

中兴新支点国产系统将联合阿里龙蜥社区制定多项行业标准

近日,从中兴新支点操作系统官方了解到,中兴迎来阿里龙蜥社区理事长马涛一行人,并进行了深度交流。会上中兴新支点操作系统回顾了近一年在龙蜥社区的贡献和投入,并对双方未来的合作诉求和合作计划展开了讨论。会后,龙蜥…

代理IP的稳定性至关重要!真实技术案例引发深思

在当今的网络世界中,IP代理已经成为了我们保护个人隐私、开展各类互联网业务的重要工具。不过很多人在使用IP代理时,常常会忽视一个关键因素——代理IP的稳定性。今天我们就来谈谈这个问题,并分享一个真实的案例,希望能引起大家对…

linux粘滞位的介绍及使用

文章目录 1.粘滞位的引入2.粘滞位的使用 1.粘滞位的引入 首先看一个场景 已知 对目录无w权限时 无法进行目录中的文件的创建/删除操作但是普通用户通过sudo命令 以root身份创建一个文件 rw- r-- r-- 普通用户此时是other 没有w权限 但却可以删除 [root和普通用户在一个目录下时…

1210. 连号区间数(枚举)

题目: 1210. 连号区间数 - AcWing题库 思路:枚举 枚举一般是先暴力再优化。 注意:对于区间的枚举,一般是定一移一。固定任何一端移动另外一端均可以。但是此题为便于在枚举移动端的过程中确定最大最小,选择定左移右…

TinyMce富文本编辑器使用【详细】

TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器。同类程序有:UEditor、Kindeditor、Simditor、CKEditor、wangEditor、Suneditor、froala等等。 TinyMCE的优势: 开源可商用,基于LGPL2.1插件丰富,自带插件基本涵盖日常…

css3文字环绕旋转

目录 固定数量文字环绕旋转不固定数量文字环绕旋转效果图 固定数量文字环绕旋转 <!-- 文字旋转测试 --> <template><div class"page"><div><div v-for"(item, index) in [...Array(20).keys()]" :key"index" style&…

104.c语言中的define的两个模糊点

1. define 是按照从上到下的顺序的 #define 必须先定义&#xff0c;否则报错 2.函数体内的define的影响 2.1 从定义开始的位置起&#xff0c;之后都有效 不受函数作用域的限制 #include <stdio.h>//int a[N] {0};#define N 100int a[N] {0}; //int b[X]; void abcd(v…

高等数学教材重难点题型总结(三)函数与极限

首先是考研大纲包含的内容&#xff1a; 1.理解并会用罗尔(Rolle)定理、拉格朗日(Lagrange)中值定理和泰勒(Taylor)定理&#xff0c;了解并会用柯西(Cauchy)中值定理. 2.掌握用洛必达法则求未定式极限的方法. 3.理解函数的极值概念&#xff0c;掌握用导数判断函数的单调性和求函…

基于SSM的在线作业管理系统 -octopus-master(源码+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

虚幻5 删除C盘缓存及修改缓存路径

一.修改C盘缓存 C盘缓存路径为&#xff1a; C:\Users\xx(这里是你的用户名)\AppData\Local\UnrealEngine\Common\DerivedDataCache 注意&#xff0c;如果没有AppData文件夹&#xff0c;请依次点击查看-勾选显示隐藏的项目&#xff0c;即可 可删除里面的所有文件即可 二.修改…

leetcode 刷题 - 有效三角形个数 - 长度最小的子数组 - 无重复字符的最长子串

l611. 有效三角形的个数 - 力扣&#xff08;LeetCode&#xff09; 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例 1:输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3示…

【Git】Git的GUI图形化工具ssh协议IDEA集成Git

一、GIT的GUI图形化工具 1、介绍 Git自带的GUI工具&#xff0c;主界面中各个按钮的意思基本与界面文字一致&#xff0c;与git的命令差别不大。在了解自己所做的操作情况下&#xff0c;各个功能点开看下就知道是怎么操作的。即使不了解&#xff0c;只要不做push操作&#xff0c;…

天翼云江西分公司副总经理彭越华一行莅临拓世科技集团指导考察,共绘蓝图开启智能新篇章

世界经济脉络在数字化的浪潮中迎来了新的生机&#xff0c;企业的成长轨迹正在智能化的力量下重新塑造。天翼云科技有限公司江西分公司副总经理彭越华一行的到访&#xff0c;为拓世科技集团带来了新的发展机遇。这场深入的交流&#xff0c;不仅预示着在科技创新和数字化转型的征…