Javascript 素因子计算器JS-Can';无法找到无限循环

Javascript 素因子计算器JS-Can';无法找到无限循环,javascript,math,Javascript,Math,所以我试着回顾我解决问题的能力,想重做我的主要因素计算器。代码重构,更高效,等等,因为我是JS的初学者 在重新创建它的过程中,我遇到了一个相当大的问题——无限循环。现在,我已经将我的函数分解为不同的部分,并分别调用它们——它们工作得很好。只要数字小于等于10,主函数本身就可以正常工作。但出于某种原因,每当我调用参数大于10的函数时,就会有一个无限循环 如果答案显而易见,我很抱歉,现在已经很晚了。我就是看不出来 简单代码如下: var findPrimeFactors = function (nu

所以我试着回顾我解决问题的能力,想重做我的主要因素计算器。代码重构,更高效,等等,因为我是JS的初学者

在重新创建它的过程中,我遇到了一个相当大的问题——无限循环。现在,我已经将我的函数分解为不同的部分,并分别调用它们——它们工作得很好。只要数字小于等于10,主函数本身就可以正常工作。但出于某种原因,每当我调用参数大于10的函数时,就会有一个无限循环

如果答案显而易见,我很抱歉,现在已经很晚了。我就是看不出来

简单代码如下:

var findPrimeFactors = function (number) {

    var isPrime = function (number) {
        var primes = [];
        for (i = 2; i < number; i++) {
            if (number % i === 0) {
                return false;
            }
        }
        primes.push(number);
        return primes;
    };

    var findFactors = function (number) {
        var factors = [];
        for (i = 2; i < number; i++) {
            if (number % i === 0) {
                factors.push(i);
            }
        }
        return factors;
    };

    var factors = findFactors(number);
    var primes = [];
    for (i = 0; i < factors.length; i++) {
        primes += isPrime(factors[i]);
    }
    return primes;
};

console.log(findPrimeFactors(10));
var findPrimeFactors=函数(编号){
var isPrime=函数(数字){
var素数=[];
对于(i=2;i
这里是代码的提琴:

var findPrimeFactors = function (number) {

    var isPrime = function (number) {
        var primes = [];
        for (i = 2; i < number; i++) {
            if (number % i === 0) {
                return false;
            }
        }
        primes.push(number);
        return primes;
    };

    var findFactors = function (number) {
        var factors = [];
        for (i = 2; i < number; i++) {
            if (number % i === 0) {
                factors.push(i);
            }
        }
        return factors;
    };

    var factors = findFactors(number);
    var primes = [];
    for (i = 0; i < factors.length; i++) {
        primes += isPrime(factors[i]);
    }
    return primes;
};

console.log(findPrimeFactors(10));

谢谢大家

很可能您遇到了这个问题,因为在每个函数中您没有声明
i
,所以它从全局范围使用它。

我发现了几个bug

  • iPrime函数应该返回true或false,而不是数组
  • findFactors中的循环应包括“number”值(更改为