📜  范围 LCM 查询的 Javascript 程序(1)

📅  最后修改于: 2023-12-03 15:27:47.036000             🧑  作者: Mango

范围 LCM 查询的 Javascript 程序

该程序是一个用于查询给定范围内多个数的最小公倍数的Javascript程序。

程序功能

本程序接受两个整数l和r,代表查询范围的左右边界。然后,它接受一个包含多个整数的数组arr,用于查询给定范围内这些数的最小公倍数。最后,程序返回查询结果的数组。

程序实现
function lcmInRange(l, r, arr) {
  var lcmArr = [];
  for (var i = l; i <= r; i++) {
    var lcm = i;
    for (var j = 0; j < arr.length; j++) {
      if (lcm % arr[j] != 0) {
        lcm *= arr[j] / gcd(lcm, arr[j]);
      }
    }
    lcmArr.push(lcm);
  }
  return lcmArr;
}

function gcd(a, b) {
  if (b == 0) {
    return a;
  } else {
    return gcd(b, a % b);
  }
}
程序说明

该程序首先定义了两个函数,一个是lcmInRange(l, r, arr),另一个是gcd(a, b)lcmInRange(l, r, arr)函数接受三个参数,l和r用于定义查询范围,arr是要查询的整数数组。

接下来,在lcmInRange(l, r, arr)函数中,我们首先创建一个空数组lcmArr用于存储查询结果。然后我们使用一个for循环遍历查询的范围,从lr。在每一次的迭代中,我们首先定义一个变量lcm,它的初始值为当前循环的数i

然后,我们使用另一个for循环遍历要查询的整数数组arr。在每一次迭代中,我们检查当前的lcm能否被当前的元素整除。如果不能,我们就使用gcd(a, b)函数计算出这两个数的最大公约数,然后将它们的乘积除以最大公约数得到最小公倍数,并将结果更新到当前的lcm

最后,我们将得到的最小公倍数存储到lcmArr数组中,并最终返回该数组的结果。

gcd(a, b)函数用于计算两个整数a和b的最大公约数。它通过递归计算,直到找到a和b的最大公约数。

实例
var l = 3;
var r = 7;
var arr = [2, 3, 4];

console.log(lcmInRange(l, r, arr));

输出结果为:[12, 6, 12, 12, 60]

我们成功地使用了该程序查询出了在给定范围内数组arr中多个整数的最小公倍数。