变量值在第二次while循环后不会改变

Variable value doesn't change after second while loop

本文关键字:改变 循环 第二次 while 变量值      更新时间:2023-09-26

我有一个变量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

我不清楚你想要完成什么,但似乎在div()的第一次运行之后,c迟早会增加,然后它再也不会是0了。因此,div()将永远不会返回"YES",并且以下while循环将永远不会执行。

div简化如下:

function div(p) {
  for (var i = a; i <= b; i++) {
    if (p % i !== 0) return false;
  }
  return true;
}

这样可以消除您忘记在本地声明的c变量。

现在只需更改程序的其余部分,以处理来自div的布尔返回值,而不是查找"YES""NO"