Dies ist meine erste Herausforderung!
Hintergrund
Perfekte Zahl ist eine positive ganze Zahl, die der Summe aller Teiler außer sich selbst entspricht.
Also 6
ist perfekte Nummer, da 1 + 2 + 3 = 6
.
Auf der anderen Seite 12
liegt das nicht daran 1 + 2 + 3 + 4 + 6 = 16 != 12
.
Aufgabe
Ihre Aufgabe ist einfach: Schreiben Sie ein Programm, das für Sie n
eine 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, ... dm
sind alle Teiler von n
bis auf n
.
s
ist die Summe aller Teiler d1, ..., dm
(wieder ohne n
).
[<>]
ist entweder <
(if s < n
) oder >
(if s > n
).
Beispiele
Zum n
Sein 6
: "Ich bin eine perfekte Zahl, weil 1 + 2 + 3 = 6 == 6"
Zum n
Sein 12
: "Ich bin keine perfekte Zahl, weil 1 + 2 + 3 + 4 + 6 = 16> 12"
Zum n
Sein 13
: "Ich bin keine perfekte Zahl, weil 1 = 1 <13"
Regeln
n
ist nicht größer als der Standard Ihrer Spracheint
.- Sie können
n
aus 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 = n
IMO sein.