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

用Scratch巧解数学题——辗转相除法

Scratch 少儿编程 4140浏览 0评论

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

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

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

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

辗转相除法求两个数的公因数具体是这样的:先用两个数中的较小数除较大数,如果能整除,较小数就是最大公因数;如不能整除,用余数除上式的除数,若能整除,则余数就是两数的最大公因数;如还不能整除,重复上述方法,直到整除为止。

文字描述比较拗口,举例说明:

用Scratch巧解数学题——辗转相除法

第一次用437除以323,商为1,余数为114;
第二次用323除以114,商为2,余数为95;

第三次用114除以 95,商为1,余数为19;

第四次用 95除以 19,商为5,余数为0;

437和323的最大公因数是19。

这个算法一看就很有规律,应该很容易通过编程来实现!什么规律呢?从第二次开始,实际上就是把除数替换成上一次的余数,把被除数替换成上一次的除数。据此,很容易画出辗转相除法的程序流程图。

用Scratch巧解数学题——辗转相除法

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

用Scratch巧解数学题——辗转相除法

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

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

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

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