Practica con ejercicios reales: buscar números primos, definir funciones y usar bucles for. Incluye una versión con threading para procesar rangos en paralelo.
Variables, condicionales y bucles: ejercicios prácticos

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()