Volver a 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.

Lo que aprenderás

  • Encontrar todos los divisores propios de un número
  • Acelerar la búsqueda de divisores con la raíz cuadrada
  • Clasificar resultados con condiciones

Problema

Ver original (inglés)

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.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Encuentra los divisores propios de n y compara su suma con n para decidir la clase.

Pista 2

Solo necesitas buscar divisores hasta la raíz cuadrada, emparejando cada divisor con su compañero.

Pista 3

Trata 1 con cuidado, porque no tiene divisores positivos propios y la suma de sus divisores es cero.

Complejidad esperada

tiempo O(√n), espacio extra O(1)

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.