Détermine si un nombre est parfait, abondant ou déficient, d'après le système de classification des entiers positifs établi par Nicomaque (60 - 120 apr. J.-C.).
Le mathématicien grec Nicomaque a conçu un système de classification des entiers positifs qui range chacun d'eux dans une seule catégorie : parfait, abondant ou déficient, selon sa somme aliquote.
La somme aliquote se définit comme la somme des diviseurs d'un nombre, sans compter le nombre lui-même.
Par exemple, la somme aliquote de 15 est 1 + 3 + 5 = 9.
Un nombre est parfait lorsqu'il est égal à sa somme aliquote. Par exemple :
6 est un nombre parfait car 1 + 2 + 3 = 6
28 est un nombre parfait car 1 + 2 + 4 + 7 + 14 = 28
Un nombre est abondant lorsqu'il est inférieur à sa somme aliquote. Par exemple :
12 est un nombre abondant car 1 + 2 + 3 + 4 + 6 = 16
24 est un nombre abondant car 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36
Un nombre est déficient lorsqu'il est supérieur à sa somme aliquote. Par exemple :
8 est un nombre déficient car 1 + 2 + 4 = 7
Implémente un moyen de déterminer si un nombre donné est parfait. Selon le langage de ton parcours, tu devras peut-être aussi implémenter un moyen de déterminer si un nombre donné est abondant ou déficient.
Il est parfois nécessaire de lever une exception. Dans ce cas, il faut toujours inclure un message d'erreur explicite pour indiquer l'origine de l'erreur. Cela rend le code plus lisible et facilite grandement le débogage. Lorsque tu sais que l'origine de l'erreur sera d'un certain type, tu peux choisir de lever l'un des types d'erreur intégrés, mais il faut quand même inclure un message explicite.
Cet exercice demande d'utiliser l'instruction raise pour « lever » une ValueError si l'on passe à la fonction classify() un nombre qui n'est pas un entier positif. Les tests ne réussiront que si tu utilises raise sur l'exception et que tu y ajoutes un message.
Pour lever une ValueError avec un message, écris le message comme argument passé au type exception :
# if a number to be classified is less than 1.
raise ValueError("Classification is only possible for positive integers.")
Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.