我有一个变量num
,我给它一个值。在第一个while循环之后,值会更改,但是当我尝试在第二个while循环中使用新值时,最终结果将不依赖于新的num
。
var a = 1,
b = 13,
c = 0,
p; ///6227020800 /// 48648600 ///1801800 ///1245404160 -> /5
function div(p) {
for (var i = a; i <= b; i++) {
if (p % i !== 0) {
c++;
}
}
if (c === 0) {
return 'YES'
}
return 'NO'
}
var num = 6227020800;
while (div(num) == "YES") {
num /= 2;
}
num = num * 2; // num === 48648600
while (div(num) == "YES") {
num /= 3;
}
num = num * 3; // num should be ///1801800 when num === 48648600
while (div(num) == "YES") {
num /= 5;
}
num = num * 5 // finally num should be 360360 when num === 1801800
答案 0 :(得分:1)
我不清楚你想要完成什么,但似乎在div()
的第一次运行之后,c
迟早会增加,然后它将永远不会{{} 1}}再次。因此,0
永远不会返回div()
,并且永远不会执行以下"YES"
- 循环。
答案 1 :(得分:1)
简化div
如下:
function div(p) {
for (var i = a; i <= b; i++) {
if (p % i !== 0) return false;
}
return true;
}
这消除了您忘记在本地声明的c
变量。
现在只需更改程序的其余部分即可处理div
的布尔值返回,而不是查找"YES"
或"NO"
。