最大公约数定义:两个不全为0的非负整数m和n的最大公约数记为gcd(m,n),代表能够整除(即余数为0)m和n的最大正整数。
一、欧几里得算法
第一步:如果n=0,返回m的值作为结果,同时过程结束;否则进入第二步
第二步:m除以n,将余数赋给r
第三步:将n的值赋给m,将r的值赋给n,返回第一步
算法 Euclid(m,n)
//使用欧几里德算法计算gcd(m,n)
//输入:两个不全为0的非负整数m,n
//输出:m,n的最大公约数
if n=0
return n
while n!=0 do
r←m mod n
m←n
n← r
return n
二、连续整数检测法
第一步:将min{m,n}的值赋给t
第二步:m除以t,如果余数为0,进入第三步;否则进入第四步
第三步:n除以t,如果余数为0,返回t的值作为结果;否则进入第四步
第四步:把t的值减1。返回第二步
算法:
//使用连续整数检测法计算gcd(m,n)
//输入:两个不全为0的非负整数m,n
//输出:m,n的最大公约数
if n=0 return n
t=min{m,n}
while t>0 do
if (m mod t)==0
if (n mod t)==0
return t
else t=t-1
else t=t-1
return t
三、中学中计算gcd(m,n)的过程
第一步:找到m的所有质因数
第二步:找到n的所有质因数
第三步:从第一步和第二步求得的质因数分解式中找出所有的公因数(如果p是一个公因数,而且在m和n的质因数分解式分别出现过pm和pn次,那么应该将p重复min{pm,pn}次)
第四步:将第三步中找到的质因数相乘,其结果作为给定数字的最大公约数
本文介绍了三种计算最大公约数(GCD)的方法:1) 欧几里得算法,通过不断取余缩小数值直至一方为0来求解;2) 连续整数检测法,通过逐次尝试最小公倍数进行判断;3) 质因数分解法,通过分析两个数的质因数找到公因数并相乘得到GCD。
4862





