最大公约数和最小公倍数


问题描述:

    求两个或者多个数的最大公约数、最小公倍数

问题解决:

(1)最大公约数-------指某几个整数共有因子中最大的一个。

            欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:

定理:gcd(a,b) = gcd(b,a mod b)

证明:a可以表示成a = kb + r,则r = a mod b

假设d是a,b的一个公约数,则有

d|a, d|b,而r = a - kb,因此d|r

因此d是(b,a mod b)的公约数

假设d 是(b,a mod b)的公约数,则

d | b , d |r ,但是a = kb +r

因此d也是(a,b)的公约数

因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证

(1.1)两个数的大公约数
clipboard
(1.2)三个数以上的最大公约数
    考虑到可能求最大公约数的数目较多,如果使用欧几里得算法,两个数两个数的进行辗转相除,递归的深度可能会很大,那么这里使用最大公约数的定义来求解最大公约数。
思路是:
(1)求出所有数中最小的数min
(2)从min-1中,寻找可以被所有数整除的数
clipboard[1]
(1.3)如下是使用递归方法求解
clipboard[2]
(2)两个数的最小公倍数
clipboard[3]
注:关于最大公约数和最小公倍数存在如下的关系:
gcd(a,b)*lcm(a,b)=a*b;
(2.1)三个数以上的最小公倍数,使用递归方法来求解
clipboard[4]
原文地址:https://www.cnblogs.com/luosongchao/p/3046395.html