所以我对codewars上的gap primes问题有完整的代码,但是当我执行它时,出现错误:有时候肯定的结果比之前的检查结果还要多,所以我不知道如何解决它,也许这是优化的问题,但是我确信这样可以很快。
RangeError: Invalid array length
at primeSieve
at gap
at /home/codewarrior/index.js:113:32
at begin
at Object.it
at /home/codewarrior/index.js:112:14
at /runner/frameworks/javascript/cw-2.js:152:11
at Promise._execute
at Promise._resolveFromExecutor
at new Promise
at Object.describe
at /home/codewarrior/index.js:60:6
at /home/codewarrior/index.js:125:5
at Object.handleError
这是我的代码:
function gap(g, m, n) {
let arr = [];
let arr2 = [];
function primeSieve(n){
var a = Array(n = n/2),
t = (Math.sqrt(4+8*n)-2)/4,
u = 0,
r = [];
for(var i = 1; i < (n-1)/3; i++) a[1+3*i] = true;
for(var i = 2; i <= t; i++){
u = (n-i)/(1+2*i);
if (i%3-1) for(var j = i; j < u; j++) a[i + j + 2*i*j] = true;
}
for(var i = 0; i< n; i++) !a[i] && r.push(i*2+1);
return r;
}
arr2 = primeSieve(n);
arr = arr2.filter(num=>(num >= m) && (num <= n));
for(let i = 0;i<=arr.length;i++){
let nextValue = i+1;
if(arr[nextValue] - arr[i] === g){
return [arr[i],arr[nextValue]]
}
}
return null;
}
所以我在codewars上有一个关于gap primes问题的完整代码,但是当我执行它时,我得到了一个错误:有时,积极的结果比以前的检查要多,所以我不确定如何...] >
var a = Array(n = n/2)
如果
n
为奇数,则说明您正在创建一个非整数长度的数组,这说明了RangeError: Invalid array length