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 entre1
y7
. - 👎🏼 El
8
no es primo. Es divisible entre1
,2
,4
y8
.
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.