8223| 4
|
[教程] 跟数学老师学Scratch | 13 寻找完全数 |
人教版小学数学五年级下册《因数和倍数》一单元中,对完全数做了一些介绍。对于哪些数是完全数,其实都是书上说的,自己通过计算去寻找验证还真难做到。但是,对于计算机来说,做这件事却是小菜一碟。今天,我们通过Scratch编程来解决这个问题吧。 13.1 项目描述 演示视频 当用户设定好寻找范围后,程序通过穷举法进行寻找;找到一个就显示、播报一个结果,直到全部寻找完。 13.2 数学小课堂 要编程寻找完全数,大家得先了解完全数的定义。这一定义的基础又是“因数”的概念。在没搞清楚“因数”之前,最好不要着急学习本项目。关于“因数”,请先自行学习或者复习。 上面是比较小的两个完全数,相信大家根据这两个例子能更明白什么样的数是完全数。 13.3 编程思路 本项目的程序还是采用穷举法,有两个循环体:一个是将设定范围内的所有数逐个进行判断,判断其是否为完全数;一个是判断是否完全数的子程序中,通过从1开始逐个去除需要判断的数以寻找到这个数的因数,是因数的将进行累加求和,所有因数都找出后判断这些因数的和是否等于这个数,从而判断这个数是否为完全数。 13.4 制作项目 13.4.1 打开编程软件Mind+1.6.2,切换为【实时模式】 13.4.2 导入背景图片和角色图片 请自行设计背景、选择你喜欢的角色。 13.4.3 编写程序 (1)建立四个变量,并让其显示在舞台上 (2)创建函数“判断是否为完全数”并进行定义 和上一个项目一样,采用了文本显示和语音播报方式,需要先添加“文字朗读”扩展包。 循环的终止条件为“除数=当前数”,这样可以保证当前数本身不会进行被累加求和。(3)编写主程序 程序开始后,通过用户输入获取寻找范围值;然后从2开始一直到达到指定范围上限,逐个进行是否为完全数判断;退出循环时,说明全部判断过了,最后提示“寻找完毕”。 13.5 补充说明 在程序中使用了另一个称谓“完美数”,原因是文字朗读会把“完全数”读成“wan(二声)quan(二声)shu(三声)”。 程序运行时,建议打开加速模式。具体方法,可在前面的教程中找。 完整程序 12.6 试一试 编写一个寻找一个数的全部因数的程序。 欢迎关注我的公众号 |
167.26 KB, 下载次数: 2226
emmm这个脚本有几个优化速度的方法:[因为scratch本身重复运行速度较慢] 1.完全数的末尾都是6或28。可以这么设置: 如果[当前数长度]位数:当前数=6 那么: 如果[当前数长度-1]位数:当前数=2 那么:将当前数+2 否则:将当前数+10 而不是一个一个寻找 2.你可以建立一个链表 将寻找每个数的因数放进去 例: 将因数设定为1 重复执行 [设定一个 结果 变量] 将结果设定为当前数除以因数 如果结果四舍五入=结果 那么:如果链表中包含结果、因数不成立 那么将结果和因数加进链表 否则开始判定是否为完全数: 停止当前脚本 判定完全数: 重复执行[链表长度]次: [设定一个因数和变量] 将因数和增加链表末尾 删除链表末尾 重复结束: 将因数和设定成因数和-当前数 然后判定因数和等不等与本数 这样可以加快许多运算速度 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed