搜索
写经验 领红包

辗转相除法求大公约数递归(辗转相除法求大公约数的原理是什么)

导语:左向辗转除余法求最大公约数

辗转相除法求最大公约数递归(辗转相除法求最大公约数的原理是什么?)

要求两个自然数的最大公约数,小学三四年级就学到了。方法就是短除法,用最小的公共质因子去除两个自然数,如果两个商还有公共质因子,则继续用它们的最小质因子去除,直至两个商不再有公共质因子,最后把所有的除数即质因子相乘,那么乘积就是这两个自然数的最大公约数。比如求64和80这两个数的最大公约数,是如图这样求的。

把短除式左边所有的商乘起来,它们的积就是两个数的最大公约数。那么本题64和80的最大公约数就是2×2×2×2=16 。

短除法简单直观易学,是求最大公约数的好方法。但是遇到下面的这两个数,用短除法就困难了。

求5886467和3662407的最大公约数。

由于短除法需要试商,一般从最小的质数2开始试,然后3、5、7、11,一路向上试,但对于象本题这样的数字,这个商就很难试了,因为其最小公共质因子太大了。对于这样的情况,可以采用辗转除余法,其做法就是用小数去除大数,若余数为0,则小数就是最大公约数;若不为0,则把原小数转为大数,余数作为小数,继续小数除大数,如此辗转相除直至余数为0。余数为0时的那个除数就是最大公约数。如果此时除数为1,则两数没有公共质因子,也就是没有最大公约数,若认为其最大公约数为1也未尝不可。本题的做法如下:

辗转除余法的通用性是很好的,可以替代短除法,比如前面那道求64与80的最大公约数的题目,用辗转除余法的做法如图:

一下子就把最大公约数16求出来了。

辗转除余法能直接把最大公约数求出来,但对于比较特殊象求5886467和3662407这样的最大公约数,步骤太多太烦琐。我经过研究,把辗转除余法作了创新,我称为左向辗转除余法。方法如下:

左向辗转除余法直接把原除法当作被除法,余数当除数,利用原式直接代入计算,减少了烦琐的抄数字的过程。如果大家觉得好,就请点个赞。谢谢大家。

本文内容由小蔼整理编辑!