Todos los desafíos
Fácil 0 resueltos 0% de aceptación

Clasifica un Número por Sus Divisores

Clasifica un entero positivo como perfecto, abundante o deficiente.

Suma los divisores positivos de n que sean estrictamente menores que n. Si su suma es igual a n, el número es perfecto. Si la suma es mayor, es abundante; si es menor, es deficiente. El número 1 no tiene divisores positivos propios, así que la suma de sus divisores es 0.

Implementa perfect_number(n).

Entrada

n: El entero positivo a clasificar.

Salida

Devuelve perfect, abundant o deficient en minúsculas.

Restricciones

1 ≤ n ≤ 1,000,000. Se excluyen valores cero y negativos.

Ejemplos

Ejemplo 1
Entrada:
n = 18

Salida esperada:
expected = "abundant"
Entrada:
long long n = 18;

Salida esperada:
std::string expected = "abundant";
Entrada:
long n = 18;

Salida esperada:
string expected = "abundant";

Explicación

Los divisores propios son 1, 2, 3, 6 y 9. Su suma es 21, mayor que 18.

Ejemplo 2
Entrada:
n = 28

Salida esperada:
expected = "perfect"
Entrada:
long long n = 28;

Salida esperada:
std::string expected = "perfect";
Entrada:
long n = 28;

Salida esperada:
string expected = "perfect";

Explicación

La suma de los divisores propios es 1 + 2 + 4 + 7 + 14 = 28, exactamente el mismo número.

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.