Parcours
/
Python
Python
/
Exercices
/
Nombres parfaits
Nombres parfaits

Nombres parfaits

Facile

Instructions

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.

Parfait

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

Abondant

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

Déficient

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
  • Les nombres premiers sont déficients.

Tâche

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.

Messages d'exception

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.")
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Python Exercism

Prêt à commencer Nombres parfaits ?

Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.