Tracks
/
Python
Python
/
Übungen
/
Vollkommene Zahlen
Vollkommene Zahlen

Vollkommene Zahlen

Einfach

Anleitung

Bestimme anhand des Klassifikationsschemas von Nicomachus (60 - 120 n. Chr.) für positive Ganzzahlen, ob eine Zahl perfect, abundant oder deficient ist.

Der griechische Mathematiker Nicomachus entwickelte ein Klassifikationsschema für positive Ganzzahlen. Es ordnet jede Zahl anhand ihrer Aliquotsumme eindeutig einer der Kategorien perfect, abundant oder deficient zu. Die Aliquotsumme ist definiert als die Summe der Teiler einer Zahl, wobei die Zahl selbst nicht mitgezählt wird. Zum Beispiel ist die Aliquotsumme von 15 gleich 1 + 3 + 5 = 9.

Perfect

Eine Zahl ist perfect, wenn sie gleich ihrer Aliquotsumme ist. Zum Beispiel:

  • 6 ist perfect, weil 1 + 2 + 3 = 6
  • 28 ist perfect, weil 1 + 2 + 4 + 7 + 14 = 28

Abundant

Eine Zahl ist abundant, wenn sie kleiner als ihre Aliquotsumme ist. Zum Beispiel:

  • 12 ist abundant, weil 1 + 2 + 3 + 4 + 6 = 16
  • 24 ist abundant, weil 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36

Deficient

Eine Zahl ist deficient, wenn sie größer als ihre Aliquotsumme ist. Zum Beispiel:

  • 8 ist deficient, weil 1 + 2 + 4 = 7
  • Primzahlen sind deficient

Aufgabe

Implementiere eine Möglichkeit, festzustellen, ob eine gegebene Zahl perfect ist. Je nach deinem Sprach-Track musst du vielleicht auch eine Möglichkeit implementieren, festzustellen, ob eine gegebene Zahl abundant oder deficient ist.

Exception-Meldungen

Manchmal ist es notwendig, eine Exception auszulösen. Wenn du das tust, solltest du immer eine aussagekräftige Fehlermeldung angeben, die zeigt, woher der Fehler kommt. Das macht deinen Code lesbarer und hilft beim Debugging erheblich. Wenn du weißt, dass die Fehlerquelle von einem bestimmten Typ ist, kannst du einen der eingebauten Fehlertypen auslösen, solltest aber trotzdem eine aussagekräftige Meldung angeben.

Diese Übung verlangt, dass du die raise-Anweisung verwendest, um eine ValueError-Exception zu „werfen“, wenn du der Funktion classify() eine Zahl übergibst, die keine positive Ganzzahl ist. Die Tests bestehen nur, wenn du die exception sowohl mit raise auslöst als auch eine Meldung dazu angibst.

Um einen ValueError mit einer Meldung auszulösen, schreibe die Meldung als Argument an den exception-Typ:

# if a number to be classified is less than 1.
raise ValueError("Classification is only possible for positive integers.")
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Python Exercism

Bereit, mit Vollkommene Zahlen zu starten?

Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.