Codewars的“Primes的步骤”

时间:2015-12-10 19:57:29

标签: javascript arrays loops

在执行Codewars的“Step in Primes”时遇到了问题。

  

使函数步骤(g,m,n)g = step> = 2,m = begin number> = 2,   n =最后一个数字> = n。 Step(g,m,n)将返回第一个匹配[a,b]   m< a,b是素数< n和a + g = b。

我在基本测试用例中做得对,但是当我提交时,我在某处获得了无限循环。谁能给我建议?

function isInt(n) {
    if(typeof n==='number' && (n%1)===0) {
        return true;
    }
    else return false;
}
function step(g, m, n) {
    if(isInt(g) && isInt(m) && isInt(n) &&g >= 2 && m >= 2 && n>=m) {      
        var p=[];
        var ans=[];
        for (var temp=m; temp<=n;temp++)
        {
            var a=0;
            for (var chk=2; chk<temp-1;chk++)
                if (temp%chk===0) a++;
            if (a===0) p.push(temp);
        }    
        for (var a=0;a<p.length-1;a++)
        {
            for (var b=a+1;b<p.length;b++)
                if (p[b]===(p[a]+g)) return [p[a],p[b]];
        }
    }
    return "nil";
}

1 个答案:

答案 0 :(得分:0)

此代码可能会对您有所帮助

   function gap(g, m, n) {
  var prime-numbers = [];
  var final = [];
  var prime;

  for (var i = m; i <= n; i++) {
    prime = true;
    for (var j = 2; j < i / 2; j++) {
        if (i % j === 0) {
            prime = false;
        }
    }
    if (prime) {
        prime-numbers.push(i);
    }
}

      prime-numbers.forEach(function(prime, index) {
    if (prime + g === prime-numbers[index + 1]) {
        final.push(prime, prime-numbers[index + 1]);
    }
});

if (final) return final.slice(0,2);
else return null;
}