代码之家  ›  专栏  ›  技术社区  ›  Petr Gazarov

试图获取数字的最大素因子时浏览器崩溃(Javascript)

  •  0
  • Petr Gazarov  · 技术社区  · 10 年前

    下面是代码。当使用小(5位)或大(12位)数字参数调用函数largestPrime(number)时,无论何时,此代码都会使浏览器崩溃。我仔细检查了一下,但仍然不知道出了什么问题。请不要用不同的解决方案来回答这个问题,我想了解我的代码有什么问题。谢谢


    var sqRoot = function(n) {
    return Math.sqrt(n);
    }
    
    var isInt = function(n) {
    if(n%1 === 0) {
      return true;
    }
      else {
        return false;
      }
    }
    
    var primeCheck = function(n) {
    var res = true;
    var y = 2;
    while(y <= sqRoot(n) && res === true) {
      if(!isInt(n) || isInt(n/y)) {
        res = false;
      }
      else {
        y+=1;
      }
    }
    return res;
    }
    
    var largestPrime = function(n) {
    var y =2;
    var temp = true;
    var res = n/y;
    while(temp === true) {
      if(primeCheck(res)) {
        temp = false;
      }
    
      else {
      y+=1;
    
      }
    }
    return res;
    }
    
    
    largestPrime(/*here goes the number to be evaluated*/)
    
    1 回复  |  直到 10 年前
        1
  •  0
  •   tsh    10 年前

    你的 res 在里面 largestPrime 在循环体中从未更改过,因此程序得到了无限循环。