Итак, у меня есть готовый код для задачи с пропусками простых чисел в кодовых войнах, но когда я его выполняю, я получаю ошибку: иногда положительных результатов больше, чем при предыдущей проверке, поэтому я не уверен, как ее решить, может быть, это проблема с оптимизацией, но я уверен, что так довольно быстро
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;
}