Tous les défis
Facile 0 résolus 0 % de réussite

Classer un nombre selon ses diviseurs

Classifiez un entier positif comme parfait, abondant ou déficient.

Additionnez les diviseurs positifs de n qui sont strictement inférieurs à n. Si leur somme est égale à n, le nombre est parfait. Si la somme est supérieure, il est abondant ; si elle est inférieure, il est déficient. Le nombre 1 n'a pas de diviseur propre positif, donc la somme de ses diviseurs est 0.

Implémentez perfect_number(n).

Entrée

n : L'entier positif à classer.

Sortie

Retournez perfect, abundant ou deficient en minuscules.

Contraintes

1 ≤ n ≤ 1 000 000. Les valeurs nulles et négatives sont exclues.

Exemples

Exemple 1
Entrée :
n = 18

Sortie attendue :
expected = "abundant"
Entrée :
long long n = 18;

Sortie attendue :
std::string expected = "abundant";
Entrée :
long n = 18;

Sortie attendue :
string expected = "abundant";

Explication

Les diviseurs propres sont 1, 2, 3, 6 et 9. Leur somme est 21, supérieure à 18.

Exemple 2
Entrée :
n = 28

Sortie attendue :
expected = "perfect"
Entrée :
long long n = 28;

Sortie attendue :
std::string expected = "perfect";
Entrée :
long n = 28;

Sortie attendue :
string expected = "perfect";

Explication

La somme des diviseurs propres est 1 + 2 + 4 + 7 + 14 = 28, exactement le nombre lui-même.

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.