Nombres curiosos¶
Implementa les funcions següents al mòdul curiosos (fitxer
curiosos.py):
- curiosos.es_suma_consecutius(n, a)¶
Donats dos enters positius \(n\) i \(a\), tals que \(a < n\), retorna
Truesi \(n\) és igual a alguna suma de nombres consecutius a partir de \(a\): \(n = a + (a+1) + (a+2) + \cdots + (a+p)\), oFalsealtrament.
Per exemple, si \(n = 9\) i \(a = 4\), la funció ha de
retornar True ja que \(4+5\) és igual a \(9\). En
canvi, per \(n=9\) i \(a=3\), la funció ha de retornar
False ja que \(3\) i \(3+4\) són inferiors a \(9\)
però \(3+4+5\) és superior a \(9\). Per \(n= 6\) i
\(a=1\), la funció ha de retornar True ja que \(1+2+3
= 6\).
>>> r = es_suma_consecutius(9, 4)
>>> r
True
>>> r = es_suma_consecutius(9, 3)
>>> r
False
>>> r = es_suma_consecutius(6, 1)
>>> r
True
Trobaràs més tests al fitxer test-es_suma_consecutius.txt.
- curiosos.es_curios(n)¶
Donat l’enter positiu \(n\), retorna
Truesi \(n\) és curiós, oFalsealtrament.
Cal que la funció es_curios() cridi es_suma_consecutius().
Un nombre enter és curiós si és igual a alguna suma d’enters positius consecutius inferiors a ell mateix.
Per exemple, \(6\) i \(9\) són curiosos, però \(8\) no ho és.
>>> r = es_curios (6)
>>> r
True
>>> r = es_curios (9)
>>> r
True
>>> r = es_curios (8)
>>> r
False
Trobaràs més tests al fitxer test-es_curios.txt.
Modifica les dues funcions anteriors de la forma següent:
- curiosos.quina_suma_consecutius(n, a)¶
Donats dos enters positius \(n\) i \(a\), tals que \(a < n\), retorna \(p\) si existeix un nombre \(p\) tal que \(n = a + (a+1) + (a+2) + \cdots + (a+p)\), o \(0\) altrament.
Per exemple:
>>> r = quina_suma_consecutius(9, 4)
>>> r
1
>>> r = quina_suma_consecutius(9, 3)
>>> r
0
>>> r = quina_suma_consecutius(6, 1)
>>> r
2
Trobaràs més tests al fitxer test-quina_suma_consecutius.txt.
- curiosos.quin_curios(n)¶
Donat l’enter positiu \(n\), retorna \(a\) i \(p\) si existeixen els nombres \(a\) i \(p\) tals que \(a < n\) i \(n = a + (a+1) + (a+2) + \cdots + (a+p)\), o \(0\) i \(0\) altrament.
Cal que la funció quin_curios() cridi quina_suma_consecutius().
Per exemple:
>>> r = quin_curios (6)
>>> r
(1, 2)
>>> r = quin_curios (9)
>>> r
(2, 2)
>>> r = quin_curios (8)
>>> r
(0, 0)
Trobaràs més tests al fitxer test-quin_curios.txt.
Solució
Disposes de solucions al fitxer curiosos.py