Link Search Menu Expand Document
El Libro De Python (24.95 €) 39.95 €

Determina si un número es primo

Veamos como determinar si un número es primo. Los números primos tienen propiedades matemáticas muy interesantes. Se dice que un número es primo si solo es divisible (sin resto) por uno y por sí mismo.

  • 👍🏼 El 7 es primo. Solo es divisible entre 1 y 7.
  • 👎🏼 El 8 no es primo. Es divisible entre 1, 2, 4 y 8.

Podemos determinar si un número es primo de la siguiente manera. Miramos si el número es divisible por otros números saltando el 1 y sí mismo. Si detectamos que lo es, decimos que no es primo.

def es_primo(n):
    if n <= 1:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

Aunque la anterior función es correcta existe una optimización. No es necesario probar a dividir todos los números. Basta con probar hasta sqrt(n) + 1. En otras palabras, no hace falta probar si 10, 11, 12 dividen a 13. Ya sabes que no porque son mayores que 4. Sabiendo esto podemos optimizar el código.

def es_primo(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

Ahora podemos usar nuestra función. Verificamos que el 41 es primo.

q = 41
print(f"{p} es primo? {es_primo(p)}")

✏️ Ejercicios:

  • Escribe una función que busque un número primo muy grande, con 8 dígitos.