Dies ist meine erste Herausforderung!
Hintergrund
Perfekte Zahl ist eine positive ganze Zahl, die der Summe aller Teiler außer sich selbst entspricht.
Also 6ist perfekte Nummer, da 1 + 2 + 3 = 6.
Auf der anderen Seite 12liegt das nicht daran 1 + 2 + 3 + 4 + 6 = 16 != 12.
Aufgabe
Ihre Aufgabe ist einfach: Schreiben Sie ein Programm, das für Sie neine der folgenden Meldungen ausgibt:
Ich bin eine perfekte Nummer, weil
d1 + d2 + ... + dm = s == n
ich keine perfekte Nummer bin, weild1 + d2 + ... + dm = s [<>] n
Wo
d1, ... dmsind alle Teiler von nbis auf n.
sist die Summe aller Teiler d1, ..., dm(wieder ohne n).
[<>]ist entweder <(if s < n) oder >(if s > n).
Beispiele
Zum nSein 6: "Ich bin eine perfekte Zahl, weil 1 + 2 + 3 = 6 == 6"
Zum nSein 12: "Ich bin keine perfekte Zahl, weil 1 + 2 + 3 + 4 + 6 = 16> 12"
Zum nSein 13: "Ich bin keine perfekte Zahl, weil 1 = 1 <13"
Regeln
nist nicht größer als der Standard Ihrer Spracheint.- Sie können
naus der Standardeingabe, aus Befehlszeilenargumenten oder aus einer Datei lesen . - Die Ausgabenachricht muss auf der Standardausgabe gedruckt werden und es können keine zusätzlichen Zeichen in der Ausgabe erscheinen (möglicherweise werden Leerzeichen oder Zeilenumbrüche nachgestellt).
- Sie dürfen keine eingebauten Funktionen oder Bibliotheksfunktionen verwenden, die die Aufgabe (oder ihren Hauptteil) für Sie lösen würden. Nein
GetDivisors()oder so ähnlich. - Alle anderen Standardlücken gelten.
Gewinner
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes !
=und ==in der gleichen Gleichung? Das macht keinen Sinn. Es sollte d1 + d2 + ... + dm = s = nIMO sein.