判断完全数-第11届蓝桥杯省赛Python真题精选

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

判断完全数,本题是2020年6月20日举办的第11届蓝桥杯青少组Python编程省赛编程部分第2题,题目要求编程输出小于正整数N的完全数并统计其数量。

先来看看题目的要求吧。

一.题目说明

时间限制:4000Ms

内存限制:589824K3

背景信息

因子:也叫做因数,例如3*5=15,那么3和5是15的因子,同时15*1=15,那么1和15也是15的因子。1,3,5,15这四个因子是15的所有因子。

完数:如果一个数等于不含它本身的其他因子之和,则称该数为“完数”。如6的因子有1,2,3,6且1+2+3=6,因此6是完数。

编程实现

输入一个正整数N,输出小于N的所有完数及个数(个数前加"*",例 如:*2)

输入描述:

输入一个正整数N

输出描述:

输出小于N的所有完数及个数

样例输入:

100

样例输出:

6

28

*2

评分标准:

  • 10分:能正确输出一组数据;

  • 20分:能正确输出两组数据;

  • 20分:能正确输出三组数据;

  • 20分:能正确输出四组数据。

二.思路分析

这是一道数论题,考查的知识点主要包括循环、条件、模运算和枚举算法。

公元前6世纪,古希腊的毕达哥拉斯首先发现,有的自然数,具有一种奇异的性质:把它所有的除数(本身不包括在内)加起来,正好等于这个自然数自己。

图片

例如,6的除数有1、2、3(6不包括在内),且有 6=1 + 2 + 3。又如,28的所有的除数为1、2、4、7、14(28不包括在内),且有28=1+2+4+7+14。

像这样的数,我们就称之为完全数(完数),意思就是完美的数。

根据题目的描述,我们可以将问题拆分成两个小问题:

  • 判断单个数字是否为完美数

  • 从1到N逐个判断

这里的重点是问题1,要判断某个数字是否为完全数,首先需要找到所有的因数(不包括本身),将其进行累加,再判断总和是否和该数字相等,这是一个典型的枚举算法。

所谓因数,就是指能被该数字整除的数字,所以我们只需要使用模运算就可以了,为了方便,我们可以将判断完数的过程定义成函数。

一旦有了判断完数的函数,问题2就变得非常简单了,再次使用枚举算法,逐个进行判断即可。

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

三.编程实现

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

  • 定义函数判断完数;

  • 从1到N逐个判断;

1. 定义函数判断完数

根据前面的思路分析,定义函数如下:

图片

传入一个数字,如果是完美数,则返回True,否则返回False。

2. 从1到N逐个判断

有了上面的函数,就可以使用枚举算法,逐个判断1~N之间的数字,并统计完数的个数,代码如下:

图片

测试程序,输入100,结果如下:

图片

输入1000,结果如下:

图片

输入10000,结果如下:

图片

至此,整个程序就全部完成了,你也可以输入不同的日期来测试效果。

四.总结与思考

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

  • 循环语句,主要for...in循环;

  • 条件语句;

  • 模运算符的应用;

  • 函数的定义及使用;

  • 枚举算法;

题目难度一般,重点是如何找出给定数字的所有因数(不包括自身),解决思路就是枚举算法,判断依据就是整除,需要用到取模运算符。

实际上,取模运算符%在编程中应用非常的广泛,比如常见的整除问题、周期问题等。

通过上面的测试数据,我们可以发现完全数并不多,在个位数中只有一个6,十位数中也只有一个28,百位数中只有一个496,千位数也只有一个8128。

它们具有一致的特性:尾数都是6或8,而且永远是偶数。

你知道第5个完全数是多少吗?

可能比你想象的要大得多,它居然藏在千万位数的深处,它是33550336。

要寻找完全数并不是一件容易的事情,17世纪,法国数学家、哲学家笛卡尔曾经公开预言:“能找到的完全是不会多的,好比人类一样,要找一个完美人亦非易事。”

图片

历史也证实了他的预言,完美数稀少而优美,所以被人们称为数论宝库中的钻石。

今天,我们有了计算机,要找出完全数就容易多了,这也是编程的魅力所在。

超平老师给你留一道思考题,当输入的N越来越大时,程序执行的时间也会增加,如何优化我们的程序,从而提高算法的效率呢?

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue2+3入门到实战】(22)VUE3之组合式API - setup、reactive和ref函数、computed、watch、生命周期函数详细讲解

目录 一、组合式API - setup选项1. setup选项的写法和执行时机2. setup中写代码的特点3. <script setup>语法糖 二、组合式API - reactive和ref函数1. reactive2. ref3. reactive 对比 ref 三、组合式API - computed四、组合式API - watch1. 侦听单个数据2. 侦听多个数据…

图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

一、图的遍历的定义&#xff1a; 从图的某个顶点出发访问遍图中所有顶点&#xff0c;且每个顶点仅被访问一次。&#xff08;连通图与非连通图&#xff09; 二、深度优先遍历&#xff08;DFS&#xff09;&#xff1b; 1、访问指定的起始顶点&#xff1b; 2、若当前访问的顶点…

Linux下误删除后的恢复操作测试之extundelete工具使用

一、工具介绍 extundelete命令的功能可用于系统删除文件的恢复。在使用前&#xff0c;需要先将要恢复的分区卸载&#xff0c;以防数据被意外覆盖。 语法格式&#xff1a;extundelete [参数] 文件或目录名 常用参数&#xff1a; --after 只恢复指定时间后被删除的文件 --bef…

基于Java SSM框架实现健康管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现健康管理系统演示 JSP技术 JSP是一种跨平台的网页技术&#xff0c;最终实现网页的动态效果&#xff0c;与ASP技术类似&#xff0c;都是在HTML中混合一些程序的相关代码&#xff0c;运用语言引擎来执行代码&#xff0c;JSP能够实现与管理员的交互&#xf…

uniapp上传图片,上传头像,多张图片上传,图片回显,图片删除,图片预览

效果图&#xff1a; 上代码不废话&#xff1a; <template><view class"familyCreateMemory"><view class"box"><view class"title"><view>文字&#xff1a;</view><textarea :maxlength"-1"/…

自制数据库空洞率清理工具-C版-02-EasyClean-V1.1(支持南大通用数据库Gbase8a)

一、环境信息 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2Gbase8a版本8.6.2-R43.34.27468a27EasyClean版本V1.1 二、简述 工作和兴趣相结合的产物&#xff0c;既能更好的完成工作&#xff0c;也能看看自…

微信小程序-页面开发

文章目录 微信小程序第二章2. 页面开发2.1 创建开发页面2.2 修改项目首页2.3 页面的结构和样式设计2.3.1 WXML结构设计2.3.1.1 什么是WXML2.3.1.2 WXML的常见标签2.3.1.3 WXML的特点 2.3.2 WXSS样式设计2.3.2.1 什么是WXSS 2.4 组件库的使用和自定义组件2.4.1 小程序中的组件分…

java基于SSM的校内信息服务发布系统的设计与实现+vue论文

校内信息服务发布系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定校内信息服务发…

竞赛保研 基于机器视觉的手势检测和识别算法

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的手势检测与识别算法 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng…

详解TCP报文格式以及TCP相关特性

✏️✏️✏️今天给大家分享的是TCP报文格式的解释以及TCP协议的一些重要特性。 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff01; ✈️✈️✈…

【C++】引用、内联函数、auto关键字、基于范围的for循环、指针空值nullptr

文章目录 前言引用引用概念引用特性常引用使用场景传值、传引用效率对比引用和指针的区别 内联函数概念特性 auto关键字auto概念auto的使用细则auto不能推导类型的场景 基于范围的for循环(C11)范围for的语法形式范围for的使用条件 指针空值nullptr的出现总结 前言 提示&#x…

计算机网络—网络搭建NAT内外网映射

使用Windows Server 2003 网络拓扑 Router 外网&#xff1a;NAT IP 网段 192.168.17.0/24内网&#xff1a;仅主机模式 IP 172.16.29.4 Client1&#xff1a;仅主机模式 IP 172.16.29.2 网关 172.16.29.1 Client2&#xff1a;仅主机模式 IP 172.16.29.3 网关 172.16.29.1…

Vue3+Typescript+setup / Vue2使用scrollIntoView()实现锚点跳转指定列表

在标签上添加ref属性来引用DOM元素&#xff0c; Vue2中使用$refs来获取该DOM元素并调用scrollIntoView()方法。 使用ref"yearDiv"在每个年份的div元素上添加了一个引用。然后&#xff0c;在yearClick方法中&#xff0c;我们通过this.$refs.yearDiv[year]来获取对应…

使用Go语言采集1688网站数据对比商品价格

目录 引言 一、数据采集原理 二、数据采集流程 三、数据采集代码实现 四、数据分析与比较 五、注意事项 六、结论 引言 随着电子商务的快速发展&#xff0c;越来越多的消费者开始通过在线平台购买商品。在众多电商平台中&#xff0c;1688作为中国最大的批发交易平台&am…

CMake入门教程【核心篇】查找包(find_package)

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「本文的内容」&#xff1a;CMake入门教程 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 1.使用方法1.1基本用…

【python_将列表整合成文本】

python_将列表整合成文本 # -*- coding: utf-8 -*-data [[指令卡主, 2023-12-25, 经贸有限公司, 孙悟空], [使用了屏幕保护之后&#xff0c;元素找不到了, 2023-12-25, 科技有限公司, 许三多], [操作用友的时候&#xff0c;找不到元素, 2024-01-02, 食品科技有限公司, 小张],…

BUG汇总

20240103 通用&#xff0c;驼峰命名法&#xff0c;mybatis。 mybatis入门程序中&#xff0c; // 获取对象的顺序为&#xff1a;SqlSessionFactoryBuild-》SqlSessionFactory-》SqlSessionSqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();I…

js中的事件传递

事件传递分为两个阶段&#xff0c;一是 事件捕获&#xff0c;二是 事件冒泡。分别对应下图1~5和6-10&#xff0c;每次触发的事件从window开始向下传播&#xff0c;一直到叶子节点&#xff0c;再往回传播。每个节点都允许添加监听器&#xff0c;浏览器在事件传播过程中一旦遇到监…

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 概述

1、 Hadoop 是什么 &#xff08;1&#xff09;Hadoop是一个由Apache基金会所开发的分布式系统基础架构 &#xff08;2&#xff09;主要解决海量数据的存储和海量数据的分析计算问题 &#xff08;3&#xff09;广义上来说&#xff0c;Hadoop通常是指一个更广泛的概念——Hadoop生…

keras人工智能框架 MNIST 数据集 随机展示

阅读本文之前&#xff0c;请先参考--------win10搭建keras深度学习框架 安装运行环境 使用Python绘图库Matplotlib随机输出mnist数据集的几个图片&#xff1a;代码见下图&#xff1a; 在sublimeText中 使用ctrlB运行代码&#xff0c;结果如下图&#xff1a;