Ошибка в типах (JS)
Решаю задачу на Codewars, ссылка: https://www.codewars.com/kata/670031c78cc02fa6c28ba28a/train/javascript
Получаю ошибку:
"return BigInt(sum); RangeError: The number Infinity cannot be converted to a BigInt because it"
Как преобразовать infinity
к BigInt
, или нужно пропускать Infinity
?
Когда пропускаю Infinity
получаю другие результаты — как исправить?
Работает только с маленькими n
:
С тысячными n
уже ошибка:
Код:
function channellingPrimes(n) {
const res = 0;
const bits = [];
let sum = 0;
function isPrime( num ) {
if( num <= 1 )
return false;
for( i = 2; i * i <= num; i ++) {
if( num % i == 0 ) return false;
}
return true;
}
for(let i = 1; i <= n; i++) {
if(isPrime(i)) {
bits.push(1);
} else {
bits.push(0);
}
}
for(let i = 0; i < bits.length; i++) {
if(bits[i] === 1) {
sum += Math.pow(2, i);
}
}
return BigInt(sum);
}
console.log(channellingPrimes(4800));