Scratch编程解决小学奥数题中一类经典题型!

网友投稿 2019-04-27 10:55

https://cdn.china-scratch.com/timg/190429/10550IA2-0.jpg

《韩信点兵》是小学奥数题中一类经典题型:韩信带兵1500人去打仗,战死四五百人。战后清点人数时,韩信命令士兵每3人站一排,多出2人;每5人站一排,多出3人;每7人站一排,多出2人。韩信由此马上算出了士兵人数。请你也算一算,这支部队在战后还有多少人?

记得小时候老师是这么教的:

能除以3余2的数有:2,5,8,11,14……

能除以5余3的数有:3,8,13,18,23……

上面两列数中,首先出现的公共数是8,3和5的最小公倍数是15,能同时满足除以3余2,除以5余3这两个条件的数就是8+15X的整数。

列出这样的整数有:8,23,38……

能除以7余2的数有:2,9,16,23,30……

如此公共数为23,7和15的最小公倍数为105,即符合题目条件的数为23+105X的整数。再根据题目条件带兵1500人,战死四五百,即战后人数在1000~1100人,最终得出X=10,部队战后还剩余士兵1073人。

那要是不会这种巧妙的算法怎么办呢?那就只能用死办法了呗:一共1500人,战死四五百,那就是大概在1000~1100这个范围之内,然后从1000开始,1001,1002,1003……依次除以3,满足余2的再除以5,满足除以5余3的再除以7。

这样的方法对于人来说工作量大,且过于枯燥,也很容易因疲劳而出错。但是,这对于计算机来说却很简单,正好发挥计算机预算速度快的优势。在编程算法中还有专属于这种“笨”办法的名字呢——枚举法。

下面即用Scratch编写的程序代码和输出结果:

https://cdn.china-scratch.com/timg/190429/10550M064-1.jpg

https://cdn.china-scratch.com/timg/190429/10550I244-2.jpg

这个结果中已记录了1000~1500间所有满足条件的整数,最后根据题目要求选取答案即可。


软件可在MIT Scratch官网https://scratch.mit.edu免费下载。

非常可爱友好的软件界面:

https://cdn.china-scratch.com/timg/190429/10550Q151-3.jpg

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com