如何查找给定数字范围内数字的所有因子

时间:2019-06-16 15:06:52

标签: javascript

如何找到两个数字之间的所有现有因素? 例如510之间的所有1000因子。

我能想到的一件事是这样的:

function getFactors(factor, numbers) {
  let factors = new Array()
  
  for (var i = numbers[0] ; i <= numbers[1] ; i++) {
    if (i % factor == 0) factors.push(i)
  }

  return factors
}

console.log(getFactors(5, [50, 100]))

但是问题是我的数字范围很大([0, 10000]),而因子0.01很小。因此,我认为使用我的解决方案来执行此操作在性能方面会过于繁琐(我需要在每个刻度上都进行此检查)。

所以我想知道这样做的更好方法是什么?

1 个答案:

答案 0 :(得分:1)

您无需检查numbers[0]和数字[1]之间的每个数字,就可以实现相同的目的。您基本上需要获得factornumbers[0]之间的numbers[1]的每个倍数。下面的代码可以做到这一点:

function getFactors(factor, numbers) {
  let factors = new Array();
  let start = numbers[0]/factor;
  let end = numbers[1]/factor;
  for(var i=start; i<= end; i++) {
    factors.push(factor*i);
  }

  return factors
}
console.log(getFactors(5,[50,100]))
//[50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]