Cómo construir un programa para saber si un número es primo utilizando herramientas básicas de Python.
Una de las cosas que mas me ha llamado la atención de la programación es la programación competitiva. La programación competitiva es un deporte mental en el que se resuelven problemas complejos a través de un código, un reto bastante popular que proponen en las primeras fases de las competencias, es encontrar números primos. Estos números han sido de gran interés para los matemáticos, debido a que se comportan de una forma hasta ahora imposible de calcular. No obstante, gracias a la computación, se pueden encontrar una gran cantidad de estos números tan particulares; de hecho hay códigos bastante sofisticados que han encontrado números primos de incluso 24.862.048 de cifras.
De acuerdo con lo anterior, les voy a presentar un programa bastante simple, el cual nos dice di un número es primo o no. Este algoritmo se construyó con los conocimientos básicos de Python, en el que solo se incluyen loops, listas, condicionales y operadores. Sin mas preámbulos, comencemos.
n = int(input('Indroduzca un número entero positivo mayor que 1 '))
list_residuo = []
zeros = []
3.1 El primer condicional: Si n = 2, automáticamente sabemos que el número 2 es primo por definición, e imprime 2 es un número primo.
ifn == 2:
print(f'{n} es número primo')
3.2 Todos los números pares son divisibles por 2, por lo tanto si se ingresa un número par el programa automáticamente lo descarta. En esta línea, ponemos que si el residuo del cociente entre n y 2 es igual a cero, entonces, este es un número par, y como dijimos anteriormente no será un primo.
elif n%2 ==0: #para numeros pares
print(f'{n} NO es número primo')
3.3 De acuerdo a lo anterior, solo nos queda analizar los números impares. Todos los números primos son impares, sin embargo, no se cumple que todos los números impares son primos. Para descartar los impares NO primos se realiza lo siguiente:
Creamos un ciclo for, el cual me va a servir para que el elemento i pueda recorrer los números del 3 al n+1 y encontrar el residuo de n/i para cada uno de estos.
Luego, en la lista list_residuo se irán adjuntando estos residuos. Se puede observar que en range() hay tres entradas. La ultima entrada (2) indica que el elemento i tomará saltos de a 2, es decir, i = 3, 5, 7 …, n, solo toma números impares ya que sabemos que un número impar no es divisible entre un par.
else: #para numeros impares.
for i inrange(3,n+1,2):
residuo = n%i
list_residuo.append(residuo)
3.4 Se crea otro ciclo for dentro del mismo else para adjuntar solos residuos iguales a cero de la lista anterior list_residuo. el elemento j recorre toda la lista list_residuo y si se encuentra con un zero, enconces lo adjunta a la lista vacía zeros mediante la función .append().
forj in list_residuo:
ifj == 0:
zeros.append(j)
3.5 Sabemos que un número primo es divisible solo por 1 o por si mismo, si utilizamos esta definición podemos hacer la observación de que si tenemos un número n cuya lista zerossolo contiene un único cero, este cero corresponderá al residuo de n entre él mismo, (recordando que el for toma valores desde 3 hasta n y no desde 1). Basándonos en la idea anterior tenemos dos condiciones:
if len(zeros) > 1:
print(f'{n} NO es número primo')
else:
print(f' ¡{n} Es un número primo!')
El código completo es el siguiente:
n = int(input('Indroduzca un número entero '))
list_residuo = []
zeros = []
ifn == 2:
print(f'{n} es número primo')
elif n%2 ==0: #para numeros pares
print(f'{n} NO es un número primo')
else: #para numeros impares.
for i inrange(3,n+1,2):
residuo = n%i
list_residuo.append(residuo)
for j in list_residuo:
if j == 0:
zeros.append(j)
if len(zeros) > 1:
print(f' {n} NO es número primo')
else:
print(f'¡{n} ES UN NÚMERO PRIMO!')
Como pudimos observar, es un código bastante simple en el que no se usaron funciones complejas, únicamente se implementó lo que se estudia en un curso de Fundamentos de programación, este caso en el lenguaje de Python. El próximo reto, es saber la cantidad de primos que hay entre un intervalo ¿cómo lo harías tú?
Hecho por: Sharon Navarro