Problema
A prime number is greater than 1 and divisible only by 1 and itself. Checking divisors up to the square root of n is enough.
Implement is_prime(n).
Input
n: The number to test.
Output
Return true if n is prime, otherwise false.
Restrições
-1,000 ≤ n ≤ 1,000,000,000,000
Exemplos
Entrada:
n = 29
Saída esperada:
expected = True
Entrada:
long long n = 29;
Saída esperada:
bool expected = true;
Entrada:
long n = 29;
Saída esperada:
bool expected = true;
Explicação
29 has no divisors other than 1 and 29.
Entrada:
n = 21
Saída esperada:
expected = False
Entrada:
long long n = 21;
Saída esperada:
bool expected = false;
Entrada:
long n = 21;
Saída esperada:
bool expected = false;
Explicação
21 = 3 × 7, so it is not prime.
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Handle numbers below 2 first; they cannot be prime.
Dica 2
Test possible divisors only up to the square root of the number.
Dica 3
Watch out for even numbers and repeated factors, since one divisor is enough to disqualify primality.
Complexidade esperada
O(sqrt(n)) time, O(1) extra space
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.