8223浏览
查看: 8223|回复: 4

[教程] 跟数学老师学Scratch | 13 寻找完全数

[复制链接]
跟数学老师学Scratch | 13 寻找完全数图1
      人教版小学数学五年级下册《因数和倍数》一单元中,对完全数做了一些介绍。对于哪些数是完全数,其实都是书上说的,自己通过计算去寻找验证还真难做到。但是,对于计算机来说,做这件事却是小菜一碟。今天,我们通过Scratch编程来解决这个问题吧。

13.1 项目描述
演示视频
      当用户设定好寻找范围后,程序通过穷举法进行寻找;找到一个就显示、播报一个结果,直到全部寻找完。

13.2 数学小课堂
跟数学老师学Scratch | 13 寻找完全数图2   
      要编程寻找完全数,大家得先了解完全数的定义。这一定义的基础又是“因数”的概念。在没搞清楚“因数”之前,最好不要着急学习本项目。关于“因数”,请先自行学习或者复习。
跟数学老师学Scratch | 13 寻找完全数图3
      上面是比较小的两个完全数,相信大家根据这两个例子能更明白什么样的数是完全数。   

13.3 编程思路
跟数学老师学Scratch | 13 寻找完全数图4
       本项目的程序还是采用穷举法,有两个循环体:一个是将设定范围内的所有数逐个进行判断,判断其是否为完全数;一个是判断是否完全数的子程序中,通过从1开始逐个去除需要判断的数以寻找到这个数的因数,是因数的将进行累加求和,所有因数都找出后判断这些因数的和是否等于这个数,从而判断这个数是否为完全数。

13.4 制作项目
13.4.1 打开编程软件Mind+1.6.2,切换为【实时模式】
跟数学老师学Scratch | 13 寻找完全数图5
跟数学老师学Scratch | 13 寻找完全数图6
13.4.2 导入背景图片和角色图片
请自行设计背景、选择你喜欢的角色。

13.4.3 编写程序
跟数学老师学Scratch | 13 寻找完全数图7
(1)建立四个变量,并让其显示在舞台上

跟数学老师学Scratch | 13 寻找完全数图8
(2)创建函数“判断是否为完全数”并进行定义
         和上一个项目一样,采用了文本显示和语音播报方式,需要先添加“文字朗读”扩展包。         循环的终止条件为“除数=当前数”,这样可以保证当前数本身不会进行被累加求和。
跟数学老师学Scratch | 13 寻找完全数图9
(3)编写主程序

      程序开始后,通过用户输入获取寻找范围值;然后从2开始一直到达到指定范围上限,逐个进行是否为完全数判断;退出循环时,说明全部判断过了,最后提示“寻找完毕”。

13.5 补充说明
      在程序中使用了另一个称谓“完美数”,原因是文字朗读会把“完全数”读成“wan(二声)quan(二声)shu(三声)”。
      程序运行时,建议打开加速模式。具体方法,可在前面的教程中找。
跟数学老师学Scratch | 13 寻找完全数图10
完整程序
12.6 试一试
      编写一个寻找一个数的全部因数的程序。

跟数学老师学Scratch | 13 寻找完全数图11
欢迎关注我的公众号

寻找完全数源程序.rar

167.26 KB, 下载次数: 2226

DFrJ5KYVQaH  中级技匠

发表于 2020-4-21 21:20:10

我爱学Scratch
回复

使用道具 举报

李志雄  学徒 来自手机

发表于 2020-4-23 15:48:51

怀若谷 发表于 2020-4-20 14:09
人教版小学数学五年级下册《因数和倍数》一单元中,对完全数做了一些介绍。对于哪些数是完全数,其实 ...

真好
要是用上教学
老师学生可以一起学数学和Scrath
回复

使用道具 举报

六年级编程小哥  学徒

发表于 2021-4-4 22:15:53

emmm这个脚本有几个优化速度的方法:[因为scratch本身重复运行速度较慢]
1.完全数的末尾都是6或28。可以这么设置:
如果[当前数长度]位数:当前数=6
那么:
如果[当前数长度-1]位数:当前数=2
那么:将当前数+2
否则:将当前数+10
而不是一个一个寻找
2.你可以建立一个链表
将寻找每个数的因数放进去
例:
将因数设定为1
重复执行
[设定一个 结果 变量]
将结果设定为当前数除以因数
如果结果四舍五入=结果
那么:如果链表中包含结果、因数不成立
那么将结果和因数加进链表
否则开始判定是否为完全数:
停止当前脚本

判定完全数:
重复执行[链表长度]次:
[设定一个因数和变量]
将因数和增加链表末尾
删除链表末尾
重复结束:
将因数和设定成因数和-当前数
然后判定因数和等不等与本数
这样可以加快许多运算速度
回复

使用道具 举报

怀若谷  高级技匠
 楼主|

发表于 2021-4-12 15:22:00

六年级编程小哥 发表于 2021-4-4 22:15
emmm这个脚本有几个优化速度的方法:[因为scratch本身重复运行速度较慢]
1.完全数的末尾都是6或28。可以这 ...

谢谢指教!设定的学习对象的是小学生。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail