La mejor forma de afianzar conceptos es practicar. Estos ejercicios trabajan funciones, bucles y condicionales con un problema clásico: encontrar números primos en un rango.
Ejecutar el programa
Guarda el código en un archivo primos.py y ejecútalo desde la terminal con:
python primos.py
Función para comprobar si un número es primo
Un número es primo si solo es divisible por 1 y por sí mismo. La función recorre los divisores posibles:
def es_primo(num):
if num == 1:
return False
for i in range(2, num):
if num % i == 0:
return False
return True
Bucle para buscar primos en un rango
Usamos un for con range(inicio, final + 1) para recorrer todos los números:
def busca_numeros_primos(num_inicio, num_final):
for num in range(num_inicio, num_final + 1):
if es_primo(num):
print(num)
total_numeros_primos += 1
Medir el tiempo de ejecución
El módulo timeit permite medir cuánto tarda el programa:
import timeit
inicio_tiempo = timeit.default_timer()
# ... código a medir ...
fin_tiempo = timeit.default_timer()
print(fin_tiempo - inicio_tiempo, "segundos")
Versión con threading
Para acelerar, podemos dividir el rango en dos mitades y procesarlas en paralelo con threading.Thread:
num_mitad = int(((num_final - num_inicio) / 2) + num_inicio)
hilo = threading.Thread(target=consulta_primos, args=(num_inicio, num_mitad))
hilo.start()
hilo.join()
