在本文中:使用除数算法利用素因数
两个数的最大公约数,也叫最大公因数,或最高公因数,是最大的能整除两个整数的数,比如20和16最大公因数是4(20和16都有更大的因数,但不是公因数了,比如8是16的因数,却不是20的因数)。 学校中很多老师教的是“猜后验证”法找最大公因数,但是其实有更简单更系统的方法来准确找到最大公因数。本方法叫“欧几里德算法”。 设两数为'a'、 'b'
方法
1:使用除数算法
1:去掉负号。
2:了解相关词汇(32除以5):
32 是被除数
5 是除数
6 是商
2 是余数(模数)
4:写出公式 : (被除数) = (除数) * (商) + (余数)
6:得出商。
7:得出余数,写入公式。
8:再写出公式,不过用上面的除数代替这里的被除数,上面的余数作为除数。
9:一直重复步骤直到余数为零。
11:这个例子中我们找出108和30的最大公因数:
12:注意第一行30和18在第二行的位置,然后除数变被除数,余数变除数,以此类推。其中每一行的商都和其他的商意义不同,只隶属于这一行,对其他行没用。
方法
2:利用素因数
1:去掉负号。
2:分别找出两数的素因子分解,列出来。
24和18为例:
24- 2 x 2 x 2 x 3
18- 2 x 3 x 3
50和35为例:
50- 2 x 5 x 5
35- 5 x 7
3:找出共同素因子
24、18为例
24- 2 x 2 x 2 x 3
18- 2 x 3 x 3
50和35为例
50- 2 x 5 x 5
35- 5 x 7
4:素因子相乘,得出最大公因数。
24和18的例子中,2乘以3得到6,即最大公因数。
50和35例子中,5是唯一的共同素因子,即最大公因数。
5:完成。
小提示
另一种方式来写,就是被除数mod除数= 余数。余数为0则GCD(最大公因数)(a,b) = b, 其他情况下GCD(a,b) = GCD(b, a mod b)
比如找GCD(-77,91)。 先用77 替换 -77,GCD(-77,91) 变为 GCD(77,91) 。 77 小于91,因此换个位置。看看是否能用公式来算。下面因为77 mod 91得到77 (因为 77 = 91 x 0 + 77) ,我们要的不是0作为最大公因数,因此(a, b) 转换为 (b, a mod b)得到: GCD(77,91) = GCD(91,77)。 91 mod 77 得到 14 (这意味着14 是余数) ,因为不是0,就把GCD(91,77) 替换为GCD(77,14) 。 77 mod 14 得到7 也不是0,再把GCD(77,14) 换成 GCD(14,7)。 14 mod 7 得到0。因为 14 = 7 * 2 无余数,最大公因数: GCD(-77,91) = 7
若 'a' 、 'b' 都是0,则任何非零数都是他们的公因数,所以没有最大公因数。数学家一般就说最大公因数是0,这个就是本例中方法得到的。
可以用这种方法很有效地化简分数。比如上述例子,-77/91 化简为 -11/13 因为7是-77 、91的最大公因数。