Practica conceptes clau amb exercicis de nombres primers, funcions i bucles. Inclou una introducció a threading.
Variables, condicionals i bucles: exercicis pràctics

La millor manera d’afiançar conceptes és practicar. Aquests exercicis treballen funcions, bucles i condicionals amb un problema clàssic: trobar nombres primers en un rang.

Executar el programa

Desa el codi en un fitxer primers.py i executa’l des del terminal amb:

python primers.py

Funció per comprovar si un número és primer

Un número és primer si només és divisible per 1 i per si mateix. La funció recorre els divisors possibles:

def es_primo(num):
    if num == 1:
        return False
    for i in range(2, num):
        if num % i == 0:
            return False
    return True

Bucle per buscar primers en un rang

Fem servir un for amb range(inicio, final + 1) per recórrer tots els 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

Mesurar el temps d’execució

El mòdul timeit permet mesurar quant triga el programa:

import timeit
inicio_tiempo = timeit.default_timer()
# ... codi a mesurar ...
fin_tiempo = timeit.default_timer()
print(fin_tiempo - inicio_tiempo, "segons")

Versió amb threading

Per accelerar, podem dividir el rang en dues meitats i processar-les en paral·lel amb 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()