如何找到两个数字之间的所有现有因素?
例如5
和10
之间的所有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
很小。因此,我认为使用我的解决方案来执行此操作在性能方面会过于繁琐(我需要在每个刻度上都进行此检查)。
所以我想知道这样做的更好方法是什么?
答案 0 :(得分:1)
您无需检查numbers[0]
和数字[1]之间的每个数字,就可以实现相同的目的。您基本上需要获得factor
和numbers[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]