最新消息:680元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

用Scratch巧解数学题——求最大公因数

Scratch 少儿编程 6946浏览 0评论

友情提示:680元/半年,儿童学编程,就上码丁实验室

用Scratch巧解数学题

——求最大公因数

用Scratch巧解数学题——求最大公因数

问题:求两个非零自然数a和b的最大公因数。比如,求12和15的最大公因数。

怎么求两个非零自然数的最大公因数?一般采用列举法或者短除法。但是,如果两个数较大,采用这两种方法就不太容易了。比如,36963与59570的最大公因数是多少?用列举法或者短除法基本上求不出来。即便数字再小一些,比如423和327的最大公因数是多少?要求出它们的最大公因数也不是一件容易的事!

求最大公因数还有其他方法吗?当然有!辗转相除法呀。虽然辗转相除法在目前的小学教材中没有介绍,但是辗转相除法却是已知的最古老的算法。其可追溯到3000年前,由数学之父欧几里得提出来的,所以又名欧几里得算法。这种算法,在我们中国可以追溯到东汉出现的《九章算术》。

Scrach编程一般面向的是小学生呀,小学教材都没有介绍辗转相除法!还有其他方法吗?好像没有。等等,让我再想想。间接法!这真是,山重水复疑无路,柳暗花明又一村!当我们通过直接法没有办法解决问题时,我们不妨换一个思路,不要老想着怎么直接去求最大公因数!

我们知道:两个非零自然数a和b的乘积,等于它们的最大公因数和最小公倍数的乘积。写成公式就是:

a×b = (a,b)×[a,b]

比如,12×15 = 3×60

既然最大公因数不好求,那我们想办法求出最小公倍数不也就求出了最大公因数吗?写成公式就是:

(a,b)= a×b ÷ [a,b]

比如,(12,15)=12×15÷[12,15]=3

这就是间接法!其实就是一种转化的思想。

问题就转化成求两个非零自然数的最小公倍数!求两个非零自然数的最小公倍数一般采用列举法列举法具体是这样的:先列举出第一个数的一倍数、二倍数、三倍数…;再列举第二个数的一倍数、二倍数、三倍数…,直至第一个同时在第一个数的倍数中出现的数,这个数就是两个数的最小公倍数。文字描述比较拗口,举例说明:

12的倍数:12、24、36、48、60、72…

15的倍数:15、30、45、60

60就是12和15的最小公倍数。

我们可以把列举法做一点点改变:就是用第一个数的一倍数、二倍数、三倍数…去除以第二个数,第一个能除尽的倍数,就是这两个数的最小公倍数。12的倍数中60是第一个能被15整除的数,因此60就是12和15的最小公倍数。

有了具体的算法,就很容易通过编程让计算机来帮助我们计算了!为了让程序更加清晰明了,我们可以把求最小公倍数写成一个过程,主程序去调用这个过程。首先还是根据算法画出求最小公倍数过程的实现流程图。

用Scratch巧解数学题——求最大公因数

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

用Scratch巧解数学题——求最大公因数

主程序通过人机交互输入两个非零自然数,然后调用这个过程就可以了。直接上代码!

用Scratch巧解数学题——求最大公因数

程序写好后,还要调试,看看功能是否正常。运行程序,按照提示依次输入两个非零自然数,36963和59570,结果很快算出来了,“36963和59570最大公因数是37”。秒杀!

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

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

您必须 登录 才能发表评论!