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

Scratch编程-欧几里得算法求最大公约数

Scratch 少儿编程 3246浏览 0评论

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

       求整数的最大公约数是小学数学里的一个知识点,方法有多种,数值比较小的可采用质因数分解法与短除法,比较好理解,也比较好用,但如果要计算的两个数数值较大时就有点困难了,这时候就用到更相减损法与辗转相除法。

 

欧几里得算法求最大公约数

 

      更相减损法:是出自我国《九章算术》的一种求最大公约数的算法,其步骤是:

 

第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
例如:用更相减损术求260和104的最大公约数。
由于260和104均为偶数,首先用2约简得到130和52,再用2约简得到65和26。
此时65是奇数而26不是奇数,故把65和26辗转相减:
65-26=39
39-26=13
26-13=13

所以,260与104的最大公约数等于13乘以第一步中约掉的两个2,即13*2*2=52。

 

更相减损法:图片代码传输错误

欧几里得算法求最大公约数

欧几里得算法求最大公约数

 辗转相除法:也叫欧几里德算法,其计算原理是两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。

最大公约数(Greatest Common Divisor)缩写为GCD。gcd(a,b) = gcd(b,a % b) (a % b != 0)

 

例如,求(319,377)的最大公约数:
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;

∴ (319,377)=29

 

辗转相除法:

欧几里得算法求最大公约数

欧几里得算法求最大公约数

计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。

手动求解最大公约数如果数值较小用短除法比较快,数值较大用欧几里得算法比较快。

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