Generadors P45231


Statement
 

pdf   zip

Es demana els codis de diversos generadors (funcions que poden ser continuades generant una seqüència de resultats). Seguiu el format dels exemples que es mostren a sota.

  1. Escriviu un generador @fibs()@ per als nombres de la sèrie de Fibonacci.

  2. Escriviu un generador @roots(x)@ per als nombres del desenvolupament de Taylor per calcular l’arrel quadrada d’un real x0x\ge0: f1(x)=x,fn(x)=12(fn1(x)+xfn1(x)).\begin{array}{rcl} f_1(x)&=&x, \\ f_n(x)&=&\frac{1}{2}\left(f_{n-1}(x)+\frac{x}{f_{n-1}(x)}\right). \end{array}

  3. Escriviu un generador @primes()@ per als nombres primers.

  4. Escriviu un generador @hammings()@ per als nombres de Hamming. Els nombres de Hamming són aquells que només tenen 2, 3 i 5 com a divisors primers.

Puntuació

Tots els apartats valen 25 punts.

Sample session
>>> g1 = fibs()
>>> [next(g1) for n in range(10)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
>>> g2 = roots(4)
>>> [round(next(g2), 10) for n in range(10)]
[4, 2.5, 2.05, 2.0006097561, 2.0000000929, 2.0, 2.0, 2.0, 2.0, 2.0]
>>> g3 = primes()
>>> [next(g3) for n in range(20)]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
>>> g4 = hammings()
>>> [next(g4) for n in range(20)]
[1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36]
Information
Author
Gerard Escudero i Jordi Petit
Language
Catalan
Official solutions
Python
User solutions
Python