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