scratch一起学第九讲——《求取最大公约数》

网友投稿 2019-09-12 13:23

https://cdn.china-scratch.com/timg/190914/13234a2W-0.jpg

哈喽大家好,欢迎再次回到我们的课堂,这节课咖姐带领大家学习如何用scratch来求取两个数的最大公约数。

在此做项目之前,我们先来了解一下定义:

最大公约数:也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。比如4和6的最大公约数就是2,而4和8的最大公约数就是4。

求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。

想要实现想要的功能,首先必须有两个数字,这两个数字是未知的,我们需要手动输入,所以可通过“询问...并等待”积木块来实现,同样的,我们也需要两个变量来接受这两个数字,具体的代码如下: 

https://cdn.china-scratch.com/timg/190914/13234a2W-0.jpg

那么接下来,我们需要进行考虑用哪种方法来实现求取最大公约数的功能,我们已经知道有很多种方法,今天我们用更相减损法来实现最大公约数的求取。

 更相减损法:也叫更相减损术,是出自《九章算术》的一种求最大公约数的算法,就是对于给定的两个数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公约数。

从上面的定义我们也知道,要反复比较差值和最小数的大小,那么这里我们就要用到一个新的计算方法----递归。

递归:就是在运行的过程中调用自己。

构成递归需具备的条件:

1. 子问题须与原始问题为同样的事,且更为简单;

2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

同样的,使用递归时我们需要一个函数。一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能,而这每个每个模块都可以看成一个子函数,这个大的程序可以看成一个主函数。具体的函数形式在我们scratch中是以“自制积木”来实现的。

按照我们更相减损法的定义,可以做出具体的代码如下:

https://cdn.china-scratch.com/timg/190914/13234910L-2.jpg

同样的,我们需要在程序开始时调用这个函数,具体代码如下:

https://cdn.china-scratch.com/timg/190914/1323494010-3.jpg

求取最大公约数的程序以及完成,赶紧试一下吧。

我们知道有多种求取公约数的方法,那么你能够运用别的方法实现同样的功能吗?试一试吧

--end--

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