gpt4 book ai didi

javascript - while 循环中的模数如何执行?

转载 作者:行者123 更新时间:2023-11-28 18:29:21 30 4
gpt4 key购买 nike

我需要帮助理解这个解决方案以获得素因数。这是代码 demo

function getMaxPrimeFactor (n) {
var temp = n;
for(var i = 2; i < temp; i++) {
while (temp % i === 0) {
temp /= i;
}
}
console.log(temp);
}

getMaxPrimeFactor(13195);

我理解 for 循环,但我不知道 while 循环和除法是怎么回事,它是如何得到 29 的输出的?

最佳答案

事情是这样的:

for 循环的要点是尝试 2 和 temp 当前值之间的每个除数,该当前值一开始等于原始数字。

while 循环的要点是获取每一个除数并尽可能多次地尝试它们。只要余数为0,即表示均分,则继续除法,并每次将temp归约到除法的结果。

因此,while (temp % i === 0) 表示只要 temp 除以 i 就继续运行 while 循环均匀无残留。 % 模运算符计算除法后的余数。

这是一个更加仪器化的版本,当您运行它时,它会向您显示更多有关正在发生的事情的信息:

function getMaxPrimeFactor (n) {
var temp = n;
for(var i = 2; i < temp; i++) {
while (temp % i === 0) {
temp /= i;
console.log("factor=",i,", ",temp*i,"/",i, "=",temp);
}
}
console.log("remaining factor=",temp);
}

getMaxPrimeFactor(13195);

关于javascript - while 循环中的模数如何执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38414735/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com