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