友情提示:380元/半年,儿童学编程,就上码丁实验室。
本题材适合五年级及以上同学。
先做一个 2 到 n 的列表。
1 既不是质数也不是合数, 所以不计,我们从 2 起到自然数 n。先假设 n 为100。
上面最后两句,是为了确认结果。
这样把 2 ~ 100 加入到了列表:
我们把上面这部分做成一个模块,把整个解题过程分成几个模块更清晰些,把上面的程序修改为:
n 表示可以不是 100。反正刚才我们用 100 试了一下。模块点”更多积木“, 再点”制作新的积木“。
再点选项, 加入文字和参数。
现在把列表中的合数去掉。
办法是:用列表中最后的也就是最大的数除以最前面也就是最小的数,如果能整除,就删除这个大数。然后再把这个最小的数变大。分两步走:
第一步, 定义删除被除数,请看模块:
第一句,将 i 设为列表的项目数,在上面已经试过,只是把地方挪到这里了。
这个模块里面的“质数”,只是一个定义的东西而已,在用的时候我们用新的东西赋值了。
看“如果。。。”那句,表示用列表中最大的数除以”质数“。能整除的删除,不能整除的留下,直到那个最大的数就是这个”质数“止。比如,这个”质数“是 2,那么从 100 开始,一直除以 2, 一直除到被除数也是 2 为止。想一想,经过这一轮后,是不是所有 2 的倍数都没有了。
整个上面这个模块还只是一个定义而已,因为里面的变量“质数”,并没有与谁有关联。等我们做完下一个模块,再来看上面这个与下面那个是如何关联起来一起工作的。
第二步, 定义除数,并关联其他两个模块,因为被除数与除数是不同的两个数,所以另设了一个变量 m, 看起来好像与 i 一样, 其实不一样,因为它代表除数。
这样那个孤立的”质数“也被新的变量所代替。
然后就是执行模块:
可以改变赋值。
多下面的视频中,反复看几次,也许就能理解整个程序的运行轨迹了。开始列表中数字多,当除数越来越大,列表中数字也越来越少,重复执行的频率也越来越快。
我们看列表,在演示的这个例子中,100 以内的质数有出来了, 是 25个。改变 n 的值可以求出不同的质数表。