zoukankan      html  css  js  c++  java
  • [JS]求一组数的最小公倍数

    求两个数最小公倍数的办法:两数相乘除以最大公因数。

    方法:

    1. 先求出前两个数的最小公倍数
    2. 用上一步的最小公倍数和新的数求最小公倍数

    题目:

    找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。

    范围是两个数字构成的数组,两个数字不一定按数字顺序排序。

    题目来源:freecodecamp

     1 function smallestCommons(arr) {
     2  var min=Math.min(arr[0],arr[1]);//确定大小顺序
     3  var max=Math.max(arr[0],arr[1]);
     4  var result=Common(min,min+1);//初始result
     5  min+=2;
     6  for(;min<=max;++min)
     7    
     8  {
     9   result=Common(result,min);
    10  }
    11   return result;
    12 }
    13 
    14 function Common(m,n)
    15 {
    16   var arr=[],i;
    17   var r=m*n;
    18   if(m%n==0) return m;//如果本来就是倍数关系,直接返回大数
    19   for(i=2;i<=m;++i)
    20     {
    21       if(m%i==0) arr.push(i);//求大数的所有因数
    22     }
    23   for(i=n;i>=2;--i)//从最大因数向下检索是否存在另一个数的因数
    24     {
    25       if(n%i==0&&arr.indexOf(i)!=-1) 
    26          return m*n/i;//存在直接返回两数之积除以最大公因数
    27         
    28         
    29     }
    30   
    31   return r;//若两数相质,直接返回两数乘积
    32 
    33 }
    34 
    35 smallestCommons([1,13]);
    原创供学习参考使用,转载请注明出处http://www.cnblogs.com/cuphoria/ @jm_epiphany
  • 相关阅读:
    51nod 1125 交换机器的最小代价
    货物运输 51Nod
    hihoCode 1075 : 开锁魔法III
    糖果
    区间 GCD
    poj2186--tarjan+缩点(有向图的强连通分量中点的个数)
    Hdu 4738【tanjan求无向图的桥】割边判定定理 dfn[x] < low[y]
    回文树介绍
    回文树总结
    140. 后缀数组(hash + 二分 / 后缀数组)
  • 原文地址:https://www.cnblogs.com/cuphoria/p/9741115.html
Copyright © 2011-2022 走看看