为什么这个js代码函数要这样写?

问题描述 投票:0回答:1
function Factors(remainder) {
    var factors = [], i;

    for (i = 2; i <= remainder; i++) {
        while ((remainder % i) === 0) {
            factors.push(i);
            remainder /= i;
        }
    }

    return factors;
}

我们可以只使用“if”代替“while”吗?

function Factors(remainder) {
    var factors = [], i;

    for (i = 2; i <= remainder; i++) {
        if(remainder%i===0) {
            factors.push(i);
            remainder /= i;
        }
    }

    return factors;
}
javascript math factors
1个回答
0
投票

原因是因为您使用

while
的功能正在寻找素因数。同时,具有
if
的函数只能找到少数可能是也可能不是素数的因子。我们使用数字 12。如果使用
while
运行该函数,结果数组应该是 [2,2,3],同时,使用
if
语句,您将得到 [2,3]。第一个答案是正确的,因为 2 x 2 x 3 = 12 并且数组中的每个数字都是素数,同时 2 x 3 = 6。

© www.soinside.com 2019 - 2024. All rights reserved.