Ceci est mon premier défi!
Contexte
Le nombre parfait est un entier positif, qui est égal à la somme de tous ses diviseurs, sauf lui-même.
Il en 6est de même du nombre parfait, depuis 1 + 2 + 3 = 6.
D'un autre côté 12, non 1 + 2 + 3 + 4 + 6 = 16 != 12.
Tâche
Votre tâche est simple, écrivez un programme qui, pour acquis n, imprimera l'un de ces messages:
Je suis un nombre parfait, parce
d1 + d2 + ... + dm = s == n
que je ne suis pas un nombre parfait, parce qued1 + d2 + ... + dm = s [<>] n
Où
d1, ... dmsont tous les diviseurs de nsauf pour n.
sest la somme de tous les diviseurs d1, ..., dm(encore une fois, sans n).
[<>]est <(si s < n) ou >(si s > n).
Exemples
Pour nêtre 6: "Je suis un nombre parfait, car 1 + 2 + 3 = 6 == 6"
Pour nêtre 12: "Je ne suis pas un nombre parfait, car 1 + 2 + 3 + 4 + 6 = 16> 12"
Pour nêtre 13: "Je ne suis pas un nombre parfait, car 1 = 1 <13"
Règles
nn'est pas plus grand que la norme de votre langueint.- Vous pouvez lire à
npartir d'une entrée standard, d'arguments de ligne de commande ou d'un fichier. - Le message de sortie doit être imprimé sur la sortie standard et aucun caractère supplémentaire ne peut apparaître dans la sortie (il peut y avoir un espace de fin ou une nouvelle ligne)
- Vous ne pouvez pas utiliser de fonctions intégrées ou de bibliothèque qui résoudraient la tâche (ou sa partie principale) pour vous. Non
GetDivisors()ou quelque chose comme ça. - Toutes les autres failles standard s'appliquent.
Gagnant
C'est le code-golf donc le code le plus court en octets gagne!
=et ==dans la même équation? Ça n'a aucun sens. Ce devrait être l' d1 + d2 + ... + dm = s = nOMI.