Διαδρομές
/
Python
Python
/
Ασκήσεις
/
Τέλειοι αριθμοί
Τέλειοι αριθμοί

Τέλειοι αριθμοί

Εύκολο

Οδηγίες

Προσδιόρισε αν ένας αριθμός είναι τέλειος, υπερτέλειος ή ελλιπής, με βάση το σύστημα ταξινόμησης του Nicomachus (60 - 120 μ.Χ.) για τους θετικούς ακέραιους.

Ο Έλληνας μαθηματικός Nicomachus επινόησε ένα σύστημα ταξινόμησης των θετικών ακεραίων, στο οποίο κάθε αριθμός ανήκει σε μία και μόνο κατηγορία: στους τέλειους, τους υπερτέλειους ή τους ελλιπείς αριθμούς, με βάση το άθροισμα γνησίων διαιρετών του. Το άθροισμα γνησίων διαιρετών ορίζεται ως το άθροισμα των διαιρετών ενός αριθμού, χωρίς να συμπεριλαμβάνεται ο ίδιος ο αριθμός. Για παράδειγμα, το άθροισμα γνησίων διαιρετών του 15 είναι 1 + 3 + 5 = 9.

Τέλειος αριθμός

Ένας αριθμός είναι τέλειος όταν ισούται με το άθροισμα γνησίων διαιρετών του. Για παράδειγμα:

  • Ο 6 είναι τέλειος αριθμός, γιατί 1 + 2 + 3 = 6
  • Ο 28 είναι τέλειος αριθμός, γιατί 1 + 2 + 4 + 7 + 14 = 28

Υπερτέλειος αριθμός

Ένας αριθμός είναι υπερτέλειος όταν είναι μικρότερος από το άθροισμα γνησίων διαιρετών του. Για παράδειγμα:

  • Ο 12 είναι υπερτέλειος αριθμός, γιατί 1 + 2 + 3 + 4 + 6 = 16
  • Ο 24 είναι υπερτέλειος αριθμός, γιατί 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36

Ελλιπής αριθμός

Ένας αριθμός είναι ελλιπής όταν είναι μεγαλύτερος από το άθροισμα γνησίων διαιρετών του. Για παράδειγμα:

  • Ο 8 είναι ελλιπής αριθμός, γιατί 1 + 2 + 4 = 7
  • Οι πρώτοι αριθμοί είναι ελλιπείς

Εργασία

Υλοποίησε έναν τρόπο να προσδιορίζεις αν ένας δεδομένος αριθμός είναι τέλειος. Ανάλογα με τη γλώσσα προγραμματισμού που χρησιμοποιείς, μπορεί επίσης να χρειαστεί να υλοποιήσεις έναν τρόπο να προσδιορίζεις αν ένας δεδομένος αριθμός είναι υπερτέλειος ή ελλιπής.

Μηνύματα εξαιρέσεων

Μερικές φορές είναι απαραίτητο να πετάξεις μια εξαίρεση. Όταν το κάνεις αυτό, θα πρέπει πάντα να συμπεριλαμβάνεις ένα κατατοπιστικό μήνυμα σφάλματος για να δείχνεις ποια είναι η πηγή του σφάλματος. Αυτό κάνει τον κώδικά σου πιο ευανάγνωστο και βοηθά σημαντικά στην αποσφαλμάτωση. Σε περιπτώσεις όπου ξέρεις ότι η πηγή του σφάλματος θα είναι συγκεκριμένου τύπου, μπορείς να επιλέξεις να πετάξεις έναν από τους ενσωματωμένους τύπους σφάλματος, αλλά θα πρέπει ακόμα να συμπεριλάβεις ένα κατατοπιστικό μήνυμα.

Αυτή η συγκεκριμένη άσκηση απαιτεί να χρησιμοποιήσεις την εντολή raise για να "πετάξεις" ένα ValueError αν στη συνάρτηση classify() περαστεί ένας αριθμός που δεν είναι θετικός ακέραιος. Τα τεστ θα περάσουν μόνο αν και πετάξεις την exception με raise και συμπεριλάβεις ένα μήνυμα μαζί της.

Για να πετάξεις ένα ValueError με μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο exception:

# if a number to be classified is less than 1.
raise ValueError("Classification is only possible for positive integers.")
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Python Exercism

Έτοιμος να ξεκινήσεις την άσκηση Τέλειοι αριθμοί;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.