Todos os desafios
Fácil 0 resolvidos 0% de aceitação

Classifique um Número pelos Seus Divisores

Classifique um inteiro positivo como perfeito, abundante ou deficiente.

Some os divisores positivos de n que são estritamente menores que n. Se essa soma for igual a n, o número é perfeito. Se a soma for maior, ele é abundante; se for menor, é deficiente. O número 1 não possui divisores positivos próprios, então a soma dos seus divisores é 0.

Implemente perfect_number(n).

Entrada

n: O inteiro positivo a ser classificado.

Saída

Retorne perfect, abundant ou deficient como texto em letras minúsculas.

Restrições

1 ≤ n ≤ 1.000.000. Valores zero e negativos estão excluídos.

Exemplos

Exemplo 1
Entrada:
n = 18

Saída esperada:
expected = "abundant"
Entrada:
long long n = 18;

Saída esperada:
std::string expected = "abundant";
Entrada:
long n = 18;

Saída esperada:
string expected = "abundant";

Explicação

Os divisores próprios são 1, 2, 3, 6 e 9. A soma deles é 21, maior que 18.

Exemplo 2
Entrada:
n = 28

Saída esperada:
expected = "perfect"
Entrada:
long long n = 28;

Saída esperada:
std::string expected = "perfect";
Entrada:
long n = 28;

Saída esperada:
string expected = "perfect";

Explicação

A soma dos divisores próprios é 1 + 2 + 4 + 7 + 14 = 28, exatamente o próprio número.

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.