最大公约数
概念
最大公约数:指两个或多个整数共有约数中最大的一个。
辗转相除法
1、大数放a中、小数放b中;
2、求a/b的余数;
3、若temp=0则b为最大公约数;
4、如果temp!=0则把b的值给a、temp的值给b;
5、返回第二步;
function greatest(n1, n2) {
if (n1 < n2) {
[n1, n2] = [n2, n1]
}
while (n1 % n2) {
[n1, n2] = [n2, n1 % n2]
}
return n2;
}
最小公倍数
概念
最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。
求法
一个简单的方法直接求:a*b/最大公约数
function smallest(n1, n2) {
return n1 * n2 / greatest(n1, n2);
}
多个数的最小公倍数
function smallestCommons(...arr) {
//循环求多个数的最小公倍数
return arr.reduce((prev, item) => smallest(prev, item));
}