Задача
Define a function that takes an integer argument and returns logical valuetrue
orfalse
depending on if the integer is a prime. Per Wikipedia, a prime number (or a prime) is a natural number greater than 1 that has no positive divisors other than 1 and itself.
Пример
is_prime(1) /* false */ is_prime(2) /* true */ is_prime(-1) /* false */
Первая попытка
function isPrime(num) { if (num < 2) { return false; } for (let i = 2; i < (num / 2) + 1; i++) { if (num % i === 0) { return false; } } return true; }
Он прошел все тесты, кроме временной сложности. Моему первому решению не удалось выполнить тайм-аут, хотя я ограничил цикл на половину (число / 2)
Окончательный ответ
function isPrime(num) { if (num < 2) { return false; } if (num === 2) { return true; } const maximumDividor = Math.sqrt(num) + 1; for (let i = 2; i < maximumDividor; i++) { if (num % i === 0) { return false; } } return true; }
Я заменил метод квадратного корня вместо половинного значения. Это сократит время выполнения наполовину.