用Scratch巧解数学题——判定质数

网友投稿 2018-12-14 15:03

https://cdn.china-scratch.com/timg/181216/1503202320-0.jpg

给你一个大于1的自然数,请判断它是合数还是质数!比如,99991是质数还是合数?

我们知道,质数就是只有1和它自身两个因数的。因此,要判断一个大于1的自然数n是不是质数,最简单的办法就是看n能不能被2~n-1中的某个数整除。只要有一个数能被n整除,n就是合数;如果都不能被n整除,n就是质数。比如97,我们就看它能不能被2~96中的某一个数整除。

这个方法说起来很简单,但是如果给出的数较大,实际算起来就没那么简单!比如,99991。再比如,1234567891。通过人工计算来判断出它们是质数还是合数,那真不是一件容易的事。

能不能编一个程序让计算机来帮助我们计算呢?当然可以!根据上述算法就可以画出程序流程图。

https://cdn.china-scratch.com/timg/181216/1503211449-1.jpg

有了流程图,编写代码就很简单了。流程图就是编程的施工图。学习编程,画流程图是基本功。一定要养成无流程图不写代码的好习惯!流程图本身就是编程思路的体现,通过画流程图也可以进一步整理我们的思路。

https://cdn.china-scratch.com/timg/181216/150321DY-2.jpg

程序写好后,还要调试,看看功能是否正常。通过调试,我们会发现对于不太大的数,这个程序很快就能给出结果,简直是秒杀!但如果你输入1234567891,程序运行很久才会出结果。这种状况,其实也是不能接受的。正如你玩一个游戏,它老是卡顿,你还会玩吗?一个好的程序,只考虑功能的正确性是不够的,还要考虑它的运行速度,它占用计算机内存的情况。当然,这是对高级程序员的要求。我们在学习编程的时候,更多地还是考虑功能的正确性。

运行速度过慢,怎么办?重新设计呀!太慢,严格来讲就是不符合设计要求。你必须重新考虑程序的架构和实现算法。

要判定一个数n是不是质数其实不需要一直试到n-1,到n的算术平方根(要取整,绝大多数程序设计语言都有取整运算符或者功能块)就可以了!其流程图与之前的算法基本相同,不再赘述。直接上程序代码。

https://cdn.china-scratch.com/timg/181216/15032132V-3.jpg

运行程序,按照提示输入1234567891。程序很快就给出结果了。由此可见,在编程中,算法是很重要的。随着学习的深入和编制的程序越来越复杂,我们就能更深地体会到:算法是程序的灵魂。

计算机是不是很强大呀!但前提是你要会编程呀!只有会编程,你才能让计算机替你解决问题呀!别担心,编程其实也没有想象那么难!只要你愿意学。

Scratch虽然是专门为少儿设计的编程语言,但其功能还是非常强大的,不仅可以创建动画、游戏和故事书,还可以用来求解数学题,实现一些数学算法。学过Scratch后,将来再学习其他高级程序设计语言,理解起来也会更加顺畅,更加容易!

--end--

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