functionisPrime(n) {
if (n <= 1) returnfalse;
if (n <= 3) returntrue;
if (n % 2 === 0 || n % 3 === 0) returnfalse;
for (let i = 5; i * i <= n; i += 6) {
if (n % i === 0 || n % (i + 2) === 0) returnfalse;
}
returntrue;
}
Идея: достаточно проверить делители до √n; крутим кандидатов вида 6k±1.
Дальше
Решето Эратосфена — много запросов на диапазоне; Миллер–Рабин — большие числа.
Краевые
1 не простое; отрицательные — обычно false; для Number следите за точностью > Number.MAX_SAFE_INTEGER.