Avís
Per a resoldre aquests exercicis no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura. Ara bé, podeu dissenyar les funcions demanades bé com a generadors, bé utilitzant les funcions predefinides de Python i les dels mòduls itertools, functools i operator.
2. Seqüència de nombre de divisors (5 punts)¶
Anomenarem D(n) al nombre de divisors que té un enter estrictament positiu n, és a dir, al nombre d’elements de la seqüència generada per la funció seq_div(n) de l’apartat anterior.
Es demana que dissenyeu la funció especificada a continuació i la deseu en un fitxer anomenat funciodiv.py:
- funciodiv.funcio_divisor()¶
- Retorna:
iterador, potencialment infinit, sobre el nombre de divisors de la seqüència dels enters positius: D(1) D(2) D(3) D(4) D(5) …
Aquesta funció hauria de respondre la següent manera:
>>> it = funcio_divisor()
>>> next(it) # el nombre 1 només té un divisor
1
>>> next(it) # el nombre 2 té dos divisors
2
>>> next(it) # el nombre 3 té dos divisors (com tot nombre primer > 1)
2
>>> next(it) # el nombre 4 té 3 divisors (1, 2 i 4)
3
>>> for i in range(20): # etc.
... print(next(it), end=',')
2,4,2,4,3,4,2,6,2,4,4,5,2,6,2,6,4,4,2,8,
Disposeu d’un joc de proves més complet al fitxer tests-funciodiv.txt