求最大公约数和最小公倍数

最大公约数

概念

最大公约数:指两个或多个整数共有约数中最大的一个。

辗转相除法

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));
}
原文地址:https://www.cnblogs.com/superlizhao/p/12274475.html