Problem
Original anzeigen (Englisch)Addiere die positiven Teiler von n, die strikt kleiner als n sind. Ist ihre Summe gleich n, ist die Zahl vollkommen. Ist die Summe größer, ist sie überschüssig; ist sie kleiner, ist sie mangelhaft. Die Zahl 1 hat keine echten positiven Teiler, daher ist ihre Teilersumme 0.
Implementiere perfect_number(n).
Eingabe
n: Die zu klassifizierende positive ganze Zahl.
Ausgabe
Gib perfect, abundant oder deficient als Kleinbuchstaben zurück.
Einschränkungen
1 ≤ n ≤ 1.000.000. Null und negative Werte sind ausgeschlossen.
Beispiele
Eingabe:
n = 18
Erwartete Ausgabe:
expected = "abundant"
Eingabe:
long long n = 18;
Erwartete Ausgabe:
std::string expected = "abundant";
Eingabe:
long n = 18;
Erwartete Ausgabe:
string expected = "abundant";
Erläuterung
Die echten Teiler sind 1, 2, 3, 6 und 9. Ihre Summe ist 21, was größer als 18 ist.
Eingabe:
n = 28
Erwartete Ausgabe:
expected = "perfect"
Eingabe:
long long n = 28;
Erwartete Ausgabe:
std::string expected = "perfect";
Eingabe:
long n = 28;
Erwartete Ausgabe:
string expected = "perfect";
Erläuterung
Die echten Teiler ergeben 1 + 2 + 4 + 7 + 14 = 28, genau die Zahl selbst.
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.