Volver a los desafíos
Fácil 0 resueltos 0% de aceptación

Verificación de número primo

Determina si un número es primo.

Lo que aprenderás

  • Comprobar la divisibilidad con el operador %
  • Dejar de comprobar en la raíz cuadrada de n
  • Tratar 0, 1 y 2 como casos especiales

Problema

Ver original (inglés)

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

Ejemplo 1
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.

Ejemplo 2
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.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.