2. Fraccions egípcies (3 punts)

Avís

Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.

Una fracció unitària és un nombre racional escrit sota la forma d’una fracció en què el numerador és 1 i el denominador és un nombre enter positiu. Per exemple, \(\frac{1}{7}\) o \(\frac{1}{2}\).

Una fracció egípcia és una suma de fraccions unitàries de denominadors diferents. Per exemple, \(\frac{4}{5}\) és una fracció egípcia perquè \(\frac{4}{5} = \frac{1}{2} + \frac{1}{4} + \frac{1}{20}\).

Al mòdul fraccions (fitxer fraccions.py), desa la funció següent:

fraccions.suma_reciprocs(ns)

Calcula la suma dels recíprocs dels nombres de ns.

Paràmetres:

ns – iterable de nombres naturals diferents

Retorna:

suma dels recíprocs dels nombres de ns. Com que els nombres són naturals diferents, els seus recíprocs són fraccions unitàries i la seva suma, una fracció egípcia.

Tipus de retorn:

fractions.Fraction

Per exemple:


>>> nbrs = iter((4, 2, 3))
>>> f = suma_reciprocs(nbrs)
>>> f
Fraction(13, 12)

Fixa’t que \(\frac{13}{12} = \frac{1}{4} + \frac{1}{2} + \frac{1}{3}\).

Disposes d’un joc de proves més complet en el fitxer test-suma_reciprocs.txt.