判断完全数-第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。
相关文章:
判断完全数-第11届蓝桥杯省赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第27讲。 判断完全数&#…...
【Bootstrap5学习 day12】
Bootstrap5 导航 Bootstrap5提供了一种简单快捷的方法来创建基本导航,它提供了非常灵活和优雅的选项卡和Pills等组件。Bootstrap5的所有导航组件,包括选项卡和Pillss,都通过基本的.nav类共享相同的基本标记和样式。 创建基本导航 要创建简单…...
算法训练第五十九天|503. 下一个更大元素 II、42. 接雨水
503. 下一个更大元素 II: 题目链接 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之…...
mysql之数据类型、建表以及约束
目录 一. CRUD 1.1 什么是crud 1.2 select(查询) 1.3 INSERT(新增) 1.4 UPDATE(修改) 1.5 DELETE(删除) 二. 函数 2.1 常见函数 2.2 流程控制函数 2.3聚合函数 三. union与union all 3.1 union 3.2 union all 3.3 具体不同 3.4 结论 四、思维导图 一. CRUD 1.1…...
复试 || 就业day04(2024.01.05)项目一
文章目录 前言线性回归房价预测加载数据数据查看数据拆分数据建模模型的验证、应用模型的评估 总结 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容来自某机构网课,是我为复试准备的第一个项目 &#…...
华为机试真题实战应用【赛题代码篇】-最小传输时延(附python、C++和JAVA代码实现)
目录 问题描述 输入描述: 输出描述: 知识储备 解题思路 思路一...
C++ 运算符重载
(Operator) 加分 减法 []的重载 #include <iostream> using namespace std;class time1 {public:time1(){shi0;fen0;miao0;}time1(int shi, int fen, int miao){this->shi shi;this->fen fen;this->miao miao;}time1 operator (ti…...
vue3学习 【2】vite起步和开发工具基本配置
vite的简介 官方文档 刚起步学习,所以我们只需要按照官方文档的入门流程即可。推荐阅读一下官网的为什么使用vite vite目前需要的node版本是18,可以参考上一篇文章的安装nvm,用来进行多版本的node管理。 vite安装与使用 npm create vitela…...
计算机创新协会冬令营——暴力枚举题目06
我给大家第一阶段的最后一道题就到这里了,下次得过段时间了。所以这道题简单一点。但是足够经典 下述题目描述和示例均来自力扣:两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target …...
单片机快速入门
参考连接: 安装MinGW-64(在win10上搭建C/C开发环境)https://zhuanlan.zhihu.com/p/85429160MinGW-64; 链接:https://pan.baidu.com/s/1oE1FmjyK7aJPnDC8vASmCg?pwdy1mz 提取码:y1mz --来自百度网盘超级会员V7的分享C…...
Eureka相关问题及答案(2024)
1、什么是Eureka? Eureka是一个由Netflix开发的服务发现(Service Discovery)工具,它是Spring Cloud生态系统中的一个关键组件。服务发现是微服务架构中的一个重要概念,它允许服务实例在启动时注册自己,以便…...
Django 7 实现Web便签
一、效果图 二、会用到的知识 目录结构与URL路由注册request与response对象模板基础与模板继承ORM查询后台管理 三、实现步骤 1. terminal 输入 django-admin startapp the_10回车 2. 注册, 在 tutorial子文件夹settings.py INSTALLED_APPS 中括号添加 "the…...
Jenkins集成部署java项目
文章目录 Jenkins简介安装 Jenkins简介 Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。 官网 安装 在官网下载windows版本的Jenkins 但是我点击这里浏览器没有反应࿰…...
FFmpeg之——获取上传视频的尺寸(长、宽)
获取上传视频的尺寸: 获取视频尺寸通常需要借助第三方库FFmpeg。 首先,确保你的系统中已安装了FFmpeg,并且FFmpeg的可执行文件路径已经添加到你的系统环境变量中。 1.官网下载ffmpeg 进入 链接: ffmpeg官网 网址,点击下载wind…...
Ajax学习
文章目录 AjaxAjax 是什么Ajax 经典应用场景Ajax 原理示意图ajax的异步请求的方法ajax的逻辑:应用实例-验证用户名是否存在思路框架图:需求分析: 到数据库去验证用户名是否可用思路框架图大功告成:使用JQuery-Ajax实现上面相同的需求:Ajax Ajax 是什么 AJAX 即"Async…...
排序算法——关于快速排序的详解
目录 1.基本思想 2.基本原理 2.1划分思想 2.2排序过程 (1)选择基准值 (2)分割过程(Partition) (3)递归排序 (4)合并过程 2.3具体实例 2.4实现代码 2.5关键要…...
序言:《未来已来》
尊敬的读者, 你是否曾经在面对冗长的报告、繁琐的工作、沉重的生活压力时感到困扰,渴望找到一种方式来提升效率,释放压力?你是否曾经在自我创业的道路上,苦于找不到有效的市场营销方式,寻求突破?…...
【Spring实战】22 Spring Actuator 入门
文章目录 1. 定义2. 功能3. 依赖4. 配置5. 常用的应用场景1)环境监控2)运维管理3)性能优化 结论 Spring Actuator 是 Spring 框架的一个模块,为开发人员提供了一套强大的监控和管理功能。本文将深入探讨 Spring Actuator 的定义、…...
JSON安全性
确保JSON处理的安全性是现代Web开发中重要的一环。以下是一些关键的安全实践,用于防止JSON注入攻击以及确保数据在传输过程中的安全性: 1. **验证和清洗输入:** - 在将任何数据写入数据库之前,请确保验证用户输入。对于期望的JSON…...
spring-boot-maven插件repackage(goal)的那些事
前言:在打包Springboot项目成jar包时需要在pom.xml使用spring-boot-maven-plugin来增加Maven功能,在我的上一篇博客<<Maven生命周期和插件的那些事(2021版)>>中已经介绍过Maven和插件的关系,在此不再赘述&…...
从源码到应用:VTK编译与配置全流程实战
1. VTK简介与环境准备 VTK(Visualization Toolkit)是一款强大的开源三维可视化库,广泛应用于医学影像、科学计算、工程仿真等领域。我第一次接触VTK是在开发一个医学图像处理项目时,当时被它丰富的渲染功能和跨平台特性所吸引。对…...
从零构建开发者个人网站:技术栈选型、架构设计与自动化部署实践
1. 项目概述:一个开发者个人网站的诞生与演进如果你是一名开发者,大概率会想过拥有一个属于自己的个人网站。它不仅仅是简历的线上版本,更是你的技术名片、思想阵地和项目展厅。今天要聊的这个项目,nelsonlaidev/nelsonlai.dev&am…...
【工业视觉】基于序列图像动态特征提取的熔炼结晶过程建模与量化分析
1. 工业视觉在熔炼结晶过程中的核心价值 我第一次接触工业视觉在熔炼结晶中的应用是在2018年一个铜冶炼项目。当时工厂老师傅们还在用肉眼观察结晶状态,不仅效率低下,而且不同操作员的判断标准差异能达到15%。这种主观性带来的工艺波动直接影响了产品质量…...
长期使用Taotoken聚合API对项目运维复杂度的简化感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken聚合API对项目运维复杂度的简化感受 作为项目维护者,我们团队在过去一段时间里,将多个大模…...
终极iOS弹窗解决方案SDCAlertView:10个强大功能超越系统UIAlertController
终极iOS弹窗解决方案SDCAlertView:10个强大功能超越系统UIAlertController 【免费下载链接】SDCAlertView The little alert that could 项目地址: https://gitcode.com/gh_mirrors/sd/SDCAlertView SDCAlertView是一款强大的iOS弹窗解决方案,它为…...
基于SSM框架的传统服饰文化平台体验(10034)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
Next.js静态站点图片优化实战:next-image-export-optimizer配置指南
1. 项目概述:为什么我们需要一个“静态图片优化器”?如果你和我一样,经常用 Next.js 做项目,那你肯定对next/image组件又爱又恨。爱的是它开箱即用的图片懒加载、自动格式转换和响应式适配,恨的是它在构建和部署时带来…...
基于Playwright的Instagram自动化技能包:原理、实现与智能体集成
1. 项目概述与核心价值最近在折腾个人智能助理,想让它能帮我处理一些社交媒体上的琐事,比如自动查看Instagram上的新动态、给特定帖子点赞或者保存一些有趣的图片。在网上搜了一圈,发现了一个叫adamanz/instagram-skill的开源项目,…...
单片机显示开发避坑:手把手教你用C语言搞定RGB888、RGB565和RGB666的颜色格式转换
单片机显示开发实战:C语言高效处理RGB888、RGB565与RGB666格式转换 当你在STM32或ESP32上驱动一块LCD屏幕时,是否遇到过这样的场景:精心设计的UI界面在屏幕上显示时,颜色却变得怪异扭曲?这往往源于颜色格式的错配——你…...
Python开发者三步完成Taotoken OpenAI兼容接口的接入与调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Python开发者三步完成Taotoken OpenAI兼容接口的接入与调用 对于习惯使用OpenAI官方Python SDK的开发者来说,接入Taoto…...
