zoukankan      html  css  js  c++  java
  • 求最大公约数和最小公倍数

    最大公约数

    概念

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

    辗转相除法

    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));
    }
    
  • 相关阅读:
    ACM-ICPC ShangHai 2014
    DEBUG感想
    WireShark 使用日记
    C++ 备忘录
    BZOJ 1022 [SHOI2008]小约翰的游戏John
    高斯消元
    BZOJ3236 [Ahoi2013]作业
    BZOJ P3293&&P1045
    ZKW费用流的理解
    BZOJ 几道水题 2014-4-22
  • 原文地址:https://www.cnblogs.com/superlizhao/p/12274475.html
Copyright © 2011-2022 走看看