Número abundante/defectivo

Número abundante

En base a la lectura en Wikipedia sobre Número abundante:

En matemáticas, un número abundante o número excesivo es un número x para el cual σ(x) > 2x. Aquí σ(x) es la función divisor, esto es, la suma de todos los divisores positivos de x, incluido el propio x.

El valor σ(x) − 2x es conocido como la abundancia de x. Una definición equivalente es que los divisores propios del número (todos los divisores excepto el propio número) sumen más que dicho número.

Unos pocos de los primeros números abundantes son: 12, 18, 20, 24, 30, 36, 40, 42, 48, 54, 56, 60, 66, 70, 72, 78, 80, 84, 88, 90, 96, 100, 102,

A modo de ejemplo, consideremos el número 24. Sus divisores son 1, 2, 3, 4, 6, 8, 12, 24 cuya suma es 60. Puesto que 60 es mayor que 2×24=48, el número 24 es abundante. Y su abundancia es 60 − 2 × 24 = 12.

El número abundante impar más pequeño es 945.

Existen infinitos números abundantes pares e impares.

Cualquier múltiplo propio de un número perfecto, y cualquier múltiplo de un número abundante es abundante.

También, cualquier número entero mayor que 20161 puede ser escrito como la suma de dos números abundantes.

Número defectivo

En base a la lectura en Wikipedia sobre Número defectivo:

Un número defectivo o deficiente es un número natural que es mayor que la suma de sus divisores propios exceptuándose a sí mismo.

Todos los números primos son defectivos y también lo son las potencias de los números primos y los divisores propios de los números defectivos y perfectos. Si la suma de sus divisores propios es mayor, entonces se considera al número como abundante.

Es fácil ver que existen infinitos números defectivos, ya que existen infinitos números primos, y estos son sólo algunos de los números defectivos.


Defina las siguientes funciones:

  • Para número abundante:

    • es-número-abundante?: tal que dado un argumento regresa true solo si dicho argumento es un número abundante, false en caso contrario.
    • son-números-abundantes?: tal que dada una colección regresa true solo si dicha colección está conformada unica y exclusivamente por números abundantes, false en caso contrario.
    • los-abundantes-en: tal que dada una colección regresa una colección conformada unica y exclusivamente por los números abundantes encontrados en la colección dada.
    • es-la-abundancia-de?: tal que dado dos argumentos regresa true solo si el primer argumento es un número abundante y el segundo argumento es la abundancia del primer argumento.
    • las-abundancias-de: tal que dada una colección regresa una colección conformada unica y exclusicamente por los números abundantes, encontrados en la colección dada, acompañados/emparejados/asociados con su abundancia. En caso de encontrarse con algún elemento que no sea un número abundante se acompañara/emparejará/asociará dicho elemento con el número -1.
    • el-siguiente-número-abundante: tal que dado un argumento regresa el siguiente número abundante al argumento dado solo si el argumento dado es un número abundante, -1 en caso contrario.
  • Para número defectivo:

    • es-número-defectivo?: tal que dado un argumento regresa true solo si dicho argumento es un número defectivo, false en caso contrario.
    • son-números-defectivos?: tal que dada una colección regresa true solo si dicha colección está conformada unica y exclusivamente por números defectivos, false en caso contrario.
    • los-defectivos-en: tal que dada una colección regresa una colección conformada unica y exclusivamente por los números defectivos encontrados en la colección dada.
    • el-siguiente-número-defectivo: tal que dado un argumento regresa el siguiente número defectivo al argumento dado solo si el argumento dado es un número defectivo, -1 en caso contrario.

¿Se presenta algún error en las funciones si el argumento dado no es el esperado?:
(es-número-abundante? "ñaca ñaca")
(es-número-abundante? [true false true])
(los-abundantes-en? ["ñaca" \ñ \a \c \a [true false]])
(el-siguiente-número-defectivo \♞)

No debe...funciones totales ;-)

RESTRICCIONES

IMPORTANTE

  • No es posible hacer uso de recursividad de cola (tail call recursion)
  • No es posible hacer uso de lo siguiente ofrecido en Clojure: loop (recur, for), do, filter, map, mapv, amap, pmap, every?, not-every?, some-*, not-any?, remove, keep, take-*, cond, case y apply.
  • No es posible hacer uso en ningún momento del tipo de dato string o carácter, ni mucho menos de alguna expresión regular.
  • No es posible hacer uso de ningúna clase, ni mucho menos de algún método ofrecido en Java (Java Interoperation).
  • UN SOLO COMENTARIO DEBE DE CONTENER LAS FUNCIONES SOLICITADAS, incluyendo aquellas más que hayan sido necesarias definir por cuenta propia.