Problème
Afficher l’original (anglais)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
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.
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.