Javascript “解决问题的有效方法”;CountFactors“;可变性问题
我一直在讨论可编码性问题,其中一个问题是计算一个数字的所有可能因素。我把整个数字循环了一遍,得到了答案,但当然效率不高 我寻找答案,得到了这个Javascript “解决问题的有效方法”;CountFactors“;可变性问题,javascript,Javascript,我一直在讨论可编码性问题,其中一个问题是计算一个数字的所有可能因素。我把整个数字循环了一遍,得到了答案,但当然效率不高 我寻找答案,得到了这个 function solution(N) { var i; var NumFactors = 0; for(i = 1;i*i < N; i++) { if(N%i == 0) NumFactors += 2; } if(i*i == N) NumFactors++; return
function solution(N) {
var i;
var NumFactors = 0;
for(i = 1;i*i < N; i++) {
if(N%i == 0) NumFactors += 2;
}
if(i*i == N) NumFactors++;
return NumFactors
}
函数解决方案(N){
var i;
var NumFactors=0;
对于(i=1;i*i
如果您运行解决方案(24)
而没有尝试过挑战,则应返回8作为因子数,即(1、2、3、4、6、8、12、24)
既然编写代码的人没有留下任何解释,那么了解情况的人可以向我解释一下
i*i
以及将NumFactors增加2的原因。i*i用于检查平方根(N)。因为如果一个数N有一个除数,那么实际上有两个除数。因为除法的结果是另一个除数。例如,在24的情况下
如果你取除数2,你会发现另一个除数是12。因为2x12=24
。如果你循环N,即1到24,你会得到像这样的除数
2 X 12 = 24
3 X 8 = 24
4 X 6 = 24
6 X 4 = 24
8 X 3 = 24
12 X 2 = 24
24 X 1 = 24
你看,在平方根(N)之后有多余的值。这就是为什么对于优化,我们从1到平方根(N)
上面已经描述了关于增加系数2的问题。对于特殊情况,当N是一个完美的平方数,如36或49时,您将面临
6 X 6=36
和7 X 7=49
的情况,这就是为什么在这种情况下,我们将因子增加1。因为在我们的例子中实际上有一个on除数,即6
和7
。i*i用于检查平方根(N)。因为如果一个数N有一个除数,那么实际上有两个除数。因为除法的结果是另一个除数。例如,在24的情况下
如果你取除数2,你会发现另一个除数是12。因为2x12=24
。如果你循环N,即1到24,你会得到像这样的除数
2 X 12 = 24
3 X 8 = 24
4 X 6 = 24
6 X 4 = 24
8 X 3 = 24
12 X 2 = 24
24 X 1 = 24
你看,在平方根(N)之后有多余的值。这就是为什么对于优化,我们从1到平方根(N)
上面已经描述了关于增加系数2的问题。对于特殊情况,当N是一个完美的平方数,如36或49时,您将面临6 X 6=36
和7 X 7=49
的情况,这就是为什么在这种情况下,我们将因子增加1。因为在我们的例子中,实际上有一个除数,即6
和7