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

2024-01-04

[导读]:超平老师的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。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

判断完全数-第11届蓝桥杯省赛Python真题精选 的相关文章

  • Django:导入错误:无法导入名称接收者

    非常基本的 django 应用程序 当我尝试执行任何操作 runserver syncdb 时 它会为我提供以下内容 想法 如果我的其中一个文件有问题 您能帮我指导一下问题可能是什么吗 File Library Python 2 7 sit
  • 每月第 n 天运行 APScheduler 作业

    我正在寻找一个 APScheduler 触发器 它将在每月的第 n 天执行一项作业 例如 我想在每个月的第一个星期二运行一个作业 或者每个月的第一个和第三个周一 有没有人有一个触发器可以实现这一点 你可以almost使用 cron 调度程序
  • Python - Pandas - 将特定函数应用于给定级别 - 多索引数据帧

    我有一个多索引 DataFrame 并且我希望仅对分配给我的级别之一的向量应用一些计算 使用下面的代码 import pandas as pd import datetime ticker date US datetime date tod
  • 有没有纯Python的表类?

    我正在构建一个需要分析表格数据的应用程序 我想执行一些列操作 例如重命名列 删除列以及根据现有列的值计算新列的能力 我的第一选择是 Pandas 之类的东西 但是一个限制是这个项目必须是跨平台的并且非常容易在 virtualenv 中部署
  • 根据日期列过滤并创建列

    我有一个样本数据如下 date Deadline 2018 08 01 2018 08 11 2018 09 18 2018 12 08 2018 12 18 我想用代码中描述的条件填写截止日期列 如 1 DL 2 DL 3 DL 等 基于
  • 为什么 takewhile() 会跳过第一行?

    我有一个这样的文件 1 2 3 TAB 1 2 3 TAB 我想将 TAB 之间的行作为块读取 import itertools def block generator file with open file as lines for li
  • python:如何检查一行是否为空行

    试图弄清楚如何编写一个 if 循环来检查一行是否为空 该文件有许多字符串 其中之一是一个空行 用于与其他语句分隔开 不是 我认为是一个回车符后面跟着另一个回车符 new statement asdasdasd asdasdasdasd ne
  • 回归模型 statsmodel python

    这更多是一个统计问题 因为代码运行良好 但我正在学习 python 中的回归建模 我在下面使用 statsmodel 编写了一些代码来创建一个简单的线性回归模型 import statsmodels api as sm import num
  • Flask-admin 内联建模传递表单参数会抛出 AttributeError

    Flask 开发者们大家好 在 Flask admin 中 我目前尝试在模型视图中实现内联模型编辑 在模型方面 我有一个简单的树结构 表示一组内容页面 每个节点都有多个子节点以及与其关联的多个内容数据模型 模型被命名为ContentNode
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor
  • 使用 isdigit 表示浮点数?

    a raw input How much is 1 share in that company while not a isdigit print You need to write a number n a raw input How m
  • Dataframe unstack 性能 - pandas

    我正在尝试拆开数据框 它工作正常 但问题是我正在处理 CSV 文件中的巨大数据集 约 10 亿 这是示例数据集 236539 48512569874 Name Danny 236539 48512569874 Class 12 236539
  • 将 tf.contrib.layers.xavier_initializer() 更改为 2.0.0

    我该如何改变 tf contrib layers xavier initializer tf 版本 gt 2 0 0 所有代码 W1 tf get variable W1 shape self input size h size initi
  • 数据框更新后如何刷新绘图?

    假设您已经使用以下方法构建了一个图形px line 使用数据框 数据框稍后会添加新数据 用新数据刷新数据的好方法是什么 一个例子可以是px data stocks 从列的子集开始 GOOG AAPL AMZN FB NFLX MSFT 例如
  • 为什么Python安装程序不断弹出?

    每当我尝试运行 Python 文件时 都会自动弹出此窗口 虽然 我可以关闭它 但有时它会连续打开 7 10 个窗口 这令人恼火 谁能告诉我为什么会发生这种情况 None
  • 如何从 Django 中的链接设置预定义的表单值?

    我的项目是这样布局的 1 page has many categories 2 category belongs to page has many items 3 item belongs to category 当我进入一个页面时 我想修
  • Django中的自动递增值

    我在 django 中有一个表并尝试自动递增它的序列号 在自定义模板中 for 循环用于变量 自定义模板 for i in getodeskview tr td 1 td td i odesk id td td i hours td td
  • pandas - 组合行的字符串

    我有一个像这样的数据框 id text 1 DM HTN Enlarged prostate 2 hypertensive and on regular treatment 2 LBP 3 DM HTN Enlarged prostate
  • Python google云函数部署失败-Madmom pip包

    我正在尝试使用 madmom python pip 包部署 Python3 7 Google Cloud Function 但是指定madmom 0 16 1requirements txt 中的内容导致部署失败 当我从requiremen
  • 加载腌制字典对象或加载 JSON 文件哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 什么更快 A Unpickling 加载 一个 pickled 字典对象 使用pickle load or B 使用以下命令将 JSON

随机推荐

  • Git Bash教程

    Git Bash教程 Pull操作 Pull操作 输入 git pull 呈现 base root xx git pull https github com xx xx git 得到 remote Enumerating objects 5
  • DC电源模块的应用范围与市场前景

    DC电源模块的应用范围与市场前景 DC电源模块广泛应用于各种电子设备和系统中 包括通信设备 计算机 工业自动化设备 医疗设备 航天航空设备 新能源设备等 它们为这些设备提供稳定的直流电源 保证设备的正常运行 DC电源模块主要用于为电子设备提
  • 判断字符串是否是16进制颜色工具类

    该方法接受一个字符串参数colorCode 表示需要校验的十六进制颜色值 方法内部使用正则表达式来匹配colorCode是否符合规则 如果 符合则返回true 否则返回false 正则表达式解释 表示匹配字符串的开头 表示匹配 字符 表示一
  • 光端机技术综述:从理论到实践的全面探索

    在当今数据驱动的时代 光端机技术 已成为通信领域的核心组成部分 从理论的深度研究到实践的广泛应用 光端机技术不断推动着信息社会的发展 成为连接不同设备和网络的关键技术 技术特点 高速数据传输 光端机 利用光纤传输数据 具有极高的传输速率 相
  • .cer格式证书文件和 .pfx格式证书文件有什么区别?

    这里我们将讨论 cer 和 pfx 文件类型之间的差异 什么是数字证书 数字证书在电子通信中用作验证身份的密码机制 我们需要这些证书来建立安全的在线通信渠道 并确保数字数据的隐私 真实性和正确性 数字证书包括主题 实体详细信息 颁发者 CA
  • 3 分钟为英语学习神器 Anki 部署一个专属同步服务器

    Anki 介绍 Anki 是一款基于间隔重复 Spaced Repetition 原理的学习软件 想象一下 你的大脑就像是一个需要定期维护的精密仪器 间隔重复就好比是一种精准的维护计划 它通过在最佳时刻复习信息 来确保知识在你的脑海中牢固地
  • 代码随想录算法训练营Day17 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先

    LeetCode 530 二叉搜索树的最小绝对差 本题思路 看到二叉搜索树 我们可以知道 它的中序遍历的有序的 并且是单调递增 如下图所示 然后我们就可以计算出相隔的两个数之间的差值 然后找到最小的那一个即可 定义一个初始为 min 第二个
  • 组建一家IT公司的一些事项

    组建一家IT公司需要考虑多个方面 包括确定公司名称 选择注册地点 确定公司类型 组建团队 选择合适的技术和平台以及建立良好的客户关系等 以下是一些详细的步骤和建议 一 组建事项 确定公司名称 在选择公司名称时 需要考虑名称的含义和市场竞争性
  • 看完这篇 教你玩转镜像转换神器qumu实现虚拟机做题自由!

    前言 最近有小伙伴说比赛没设备 问有没有不需要设备也能实现做题自由的方法 今天这里分享一期 看完这篇你将学会 使用 qumu 转换镜像格式 一般我们做题都是 img 格式的环境 需要导入设备 有些小伙伴没有设备 就可以使用这种方法 把 im
  • 【2023最新版】黑客入门教程|三分钟手把手教会,非常简单

    前言 你知道在每天上网时 有多少黑客正在浏览我们计算机中的重要数据吗 黑客工具的肆意传播 使得即使是稍有点计算机基础的人 就可以使用简单的工具对网络中一些疏于防范的主机进行攻击 在入侵成功之后 对其中的数据信息为所欲为 当用户发现密码被盗
  • 【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习

    对比学习允许模型从未标记的数据中提取有意义的表示 通过利用相似性和不相似性 对比学习使模型能够在潜在空间中将相似的实例紧密地映射在一起 同时将那些不同的实例分开 这种方法已被证明在计算机视觉 自然语言处理 NLP 和强化学习等不同领域都是有
  • 【计算机毕设选题】opencv python 深度学习垃圾图像分类系统

    文章目录 0 前言 课题简介 一 识别效果 二 实现 1 数据集 2 实现原理和方法 3 网络结构 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升
  • IPFS技术:构建可持久安全的全球文件系统

    IPFS InterPlanetary File System 是一种点对点的分布式文件系统 旨在建立一个可持久且安全的全球文件系统 它采用了一种创新的数据组织方式 将文件以Merkle有向无环图 DAG 的形式存储和分发 实现了去中心化的
  • 编译 nccl-tests 项目

    1 编译 下载源代码 git clone recursive https github com NVIDIA nccl tests git 编译源代码 cd nccl tests make j 2 运行 cd build all reduc
  • 【MCU简单且容易理解的工作原理】

    SOC是啥 System on Chip 一个芯片 但是片上有好多东西的意思 市面上的AI芯片 包括你知道的麒麟xxx 骁龙xxx等等一些列手机芯片都是SOC 对于SOC设计者来讲 显然要知道码农们码出来的一行行代码是如何在SOC上跑起来的
  • uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -后端架构搭建

    锋哥原创的uniapp微信小程序投票系统实战 uniapp微信小程序投票系统实战课程 SpringBoot2 vue3 2 element plus 火爆连载更新中 哔哩哔哩 bilibili uniapp微信小程序投票系统实战课程 Spr
  • 租用服务器时要注意的事项有哪些

    租用 服务器 时要注意的事项 1 租用服务器时要选择可靠的机房线路 建议选择可靠的专业的BGP机房 确保在搭建网站的时候全网络覆盖 能够确保用户南北互通 2 租用服务器时要及时测试网络和硬件 建议先ping一下服务器的速度 或者测试一下下载
  • mayavi TypeError: unsupported operand type(s) for -: ‘str‘ and ‘str‘

    目录 mayavi安装报错 模拟异常 TypeError unsupported operand type s for str and str 模拟异常 TypeError unsupported operand type s for st
  • 题解 | #删除字符串中出现次数最少的字符# 利用map统计

    比预期的要低 HR打电话说是14级 不分ABC 说制造类供应链类工资和研发体系不一样 整体就要低一些 offer选择 大家帮忙看看 offer选择 大家帮忙看看 有奖活动 什么事是你实习了才知道的 春招会有好的国央企吗 招前端实习生 北京快
  • 判断完全数-第11届蓝桥杯省赛Python真题精选

    导读 超平老师的Scratch蓝桥杯真题解读系列在推出之后 受到了广大老师和家长的好评 非常感谢各位的认可和厚爱 作为回馈 超平老师计划推出 Python 蓝桥杯真题解析100讲 这是解读系列的第27讲 判断完全数 本题是2020年6月20