Problema
Un número primo es mayor que 1 y solo es divisible por 1 y por sí mismo. Es suficiente comprobar los divisores hasta la raíz cuadrada de n.
Implementa is_prime(n).
Entrada
n: El número a probar.
Salida
Devuelve true si n es primo, de lo contrario false.
Restricciones
-1,000 ≤ n ≤ 1,000,000,000,000
Ejemplos
Entrada:
n = 29
Salida esperada:
expected = True
Entrada:
long long n = 29;
Salida esperada:
bool expected = true;
Entrada:
long n = 29;
Salida esperada:
bool expected = true;
Explicación
29 no tiene divisores aparte de 1 y 29.
Entrada:
n = 21
Salida esperada:
expected = False
Entrada:
long long n = 21;
Salida esperada:
bool expected = false;
Entrada:
long n = 21;
Salida esperada:
bool expected = false;
Explicación
21 = 3 × 7, por lo tanto no es primo.
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Maneja primero los números menores que 2; no pueden ser primos.
Pista 2
Prueba posibles divisores solo hasta la raíz cuadrada del número.
Pista 3
Cuidado con los números pares y los factores repetidos; un solo divisor basta para descartar la primalidad.
Complejidad esperada
tiempo O(sqrt(n)), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.