Uno de los problemas que propongo a mis alumnos cuando están aprendiendo bucles en un lenguaje de programación es calcular si un número es primo o no.
Aquí os dejo el enunciado del problema y una propuesta de solución en Python. Espero que os sirva tanto si es para la enseñanza como para el aprendizaje.
Problema:
Imprime en pantalla si un entero dado es primo o no. Un número primo es un entero mayor que 1 que solo se puede dividir por 1 y por sí mismo.
Solución propuesta (didáctico):
import sys
a = int(sys.argv[1])
es_primo = False
if a > 1:
es_primo = True
for i in range(2, a):
if a % i == 0:
es_primo = False
print(es_primo)
Solución propuesta (eficiente):
import sys
a = int(sys.argv[1])
es_primo = False
if a > 1:
es_primo = True
if a > 2 and a % 2 == 0:
es_primo = False
else:
for i in range(3, a, 2):
if a % i == 0:
es_primo = False
break
print(es_primo)