Números abundantes X82314


Statement
 

pdf   zip

  1. Diseña una función @sumdivisores(n)@ que dado el int n>0n>0 devuelva la suma de todos sus divisores.

    Se pide hacer una función eficiente que compruebe la mínima cantidad de posibles divisores, evitando resultados triviales y aprovechando el cálculo de la raiz cuadrada.

  2. Un número es abundante cuando la suma de sus divisores supera 2n2n.

    Diseña una función @abundante(n)@ que detecte si un int 0<n0<n es abundante.

  3. Diseña una función @abundantes_consecutivos(desde, hasta)@, que dados dos int 0<desde<hasta0<desde<hasta cuente cuántos números desde<=x<hastadesde<=x<hasta abundantes hay tales que x+1x+1 es también abundante.

  4. Diseña una función @primer_consecutivo(desde, hasta)@, que dados dos int 0<desde<hasta0<desde<hasta devuelva el primer número abundante desde<=x<hastadesde<=x<hasta tal que x+1x+1 es también abundante. Si no hay ninguno devuelve -1.

Siempre que sea posible hay que utilizar las funciones de los apartados previos.

Puntuación

Apartado 1: 40 puntos

Apartado 2: 15 puntos

Apartado 3: 20 puntos

Apartado 4: 25 puntos

Ejemplo de sessión

Sample session
>>> sumdivisores(12)
28
>>> sumdivisores(220)
504
>>> abundante(40)
True
>>> abundante(45)
False
>>> abundantes_consecutivos(5000, 10000)
3
>>> primer_consecutivo(5000, 10000)
5775
>>> primer_consecutivo(6000, 7000)
-1
Information
Author
InfBesos
Language
Spanish
Official solutions
Python
User solutions
Python