Smallest Common Multiple

题目

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

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

例如对 1 和 3 —— 找出能被 1 和 3 和它们之间所有数字整除的最小公倍数。

要求

smallestCommons([1, 5]) 应该返回一个数字。
smallestCommons([1, 5]) 应该返回 60。
smallestCommons([5, 1]) 应该返回 60。
smallestCommons([1, 13]) 应该返回 360360。 

代码

//先求arr[n]与arr[n+1]的最小公倍数,再求其与arr[n+2]的最小公倍数....以此类推
function smallestCommons(arr) {
  var a = Math.min(arr[0],arr[1]);
  var b = Math.max(arr[0],arr[1]);
  var s_commons = a;
  while(a < b) {
    a++;
    s_commons = commonMultiple(s_commons,a);
  }
  return s_commons;
}

//辗转相除法求最小公倍数
function commonMultiple(a,b){
  var temp;
  var min = a;
  var max = b;
  while(b !== 0) {
    temp = a % b ;
    a = b;
    b = temp;
  }
  var result = min*max/a ;
  return result;
}

smallestCommons([1,10]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值