Μάθημα : Ναρκισσιστικοί αριθμοί (αριθμοί Armstrong)
Κωδικός : 3701020439
3701020439 - ΑΠΟΣΤΟΛΟΣ ΣΥΡΟΠΟΥΛΟΣ
Η πλατφόρμα σάς ανακατεύθυνε αυτόματα στην αρχική σελίδα για να συνδεθείτε προτού προχωρήσετε σε άλλες ενέργειες. Πιθανόν, να έληξε η σύνοδός σας.
Περιγραφή Μαθήματος
- Το μάθημα δεν διαθέτει περιγραφή -
-
θεωρία και πράξη
Ένας θετικός ακέραιος αριθμός D που έχει k ψηφία ονομάζεται ναρκισσιστικός αριθμός ή αριθμός Armstrong αν

Για παράδειγμα ο αριθμός 153 είναι ναρκισσιστικός αριθμός επειδή:

Το παρακάτω πρόγραμμα μπορεί και ελέγχει αν ένας τριψήφιος αριθμός είναι ναρκισσιστικός αριθμός. Το πρόγραμμα διαιρεί συνεχώς τον αριθμό που έδωσε ο χρήστης ώστε βρει όλα τα ψηφία του. Αν έχουμε έναν αριθμό D, τότε το υπόλοιπο της διαίρεσης του αριθμού με το 10 είναι το τελευταίο ψηφίο του αριθμού. Παίρνουμε αυτόν τον αριθμό, τον υψώνουμε στον κύβο και το αποτέλεσμα το προσθέτουμε στη μεταβλητή c στην οποία αποθηκεύει το άθροισμα των κύβων των ψηφίων του αριθμού D. Στο τέλος συγκρίνουμε την τιμή της μεταβλητής temp (η οποία έχει την αρχική τιμή του αριθμού που έδωσε ο χρήστης) με την τιμή της μεταβλητής c. Αν είναι ίσες, τότε ο χρήστης έδωσε έναν ναρκισσιστικό αριθμό τριών ψηφίων.
n = int(input('Δώσε έναν τριψήφιο ακέραιο αριθμό...\n? ')) temp = n c = 0 while n > 0: a = n % 10 n = n // 10 c = c + a ** 3 if temp == c: print("Το",temp, "είναι ναρκισσιστικός αριθμός") else: print("Το",temp,"δεν είναι ναρκισσιστικός αριθμός")Άσκηση 1.
Με βάση τον παραπάνω κώδικα δημιουργήστε ένα πρόγραμμα το οποίο θα βρίσκει όλους τους ναρκισσιστικούς αριθμούς από το 100 ως και το 999.
Αν θέλουμε να γράψουμε ένα πρόγραμμα που θα ελέγχει τον οποιοδήποτε αριθμό αν είναι ναρκισσιστικός αριθμός, τοτε πρέπει να βρούμε έναν τρόπο να υπολογίζουμε τον αριθμό των ψηφίων του. Αυτό μπορεί να γίνει διαιρώντας το αριθμό συνεχώς με το 10 μέχρι αυτός να γίνει ίσος με το μηδέν. Παράλληλα αυξάνουμε την τιμή μιας μεταβλητής κατά ένα κάθε φορά που κάνουμε διαίρεση ενώ αρχικά η μεταβλητή αυτή θα πρέπει να έχει τιμή μηδέν. Στο παρακάτω κώδικα υπάρχουν μηνύματα τα οποία εξηγούν στον χρήστη τι κάνει το πρόγραμμα.
print("*******************************************************") print("Αυτό το πρόγραμμα ελέγχει αν η είσοδος του είναι") print("ένας ναρκισσιστικός αριθμός n ψηφίων, δηλαδή αν") print("D = d1 ** k + d2 ** k + ... + dn ** k, όπου dm") print("είναι το m ψηφίο του D και k ο αριθμός των ψηφίοων του") n = int(input('Δώστε έναν θετικό ακέραιο αριθμό...\n? ')) temp = n numOfDigits = 0 while temp > 0: temp = temp // 10 numOfDigits = numOfDigits + 1 c = 0 temp = n while temp > 0: a = temp % 10 temp = temp // 10 c = c + a ** numOfDigits if n == c: print("Το",n, " είναι ναρκισσιστικός αριθμός",
numOfDigits, "ψηφίων") else: print("Το",n, " δεν είναι ναρκισσιστικός αριθμός",
numOfDigits, "ψηφίων")Προσέξτε πως στον παραπάνω κώδικα η μεταβλητή temp χρησιμοποιείται διαφορετικά από ότι πιο παραπάνω πρόγραμμα.
Άσκηση 2.
Η παράσταση len(s) επιστρέφει τον αριθμό των χαρακτήρων που αποτελούν τη συμβολοσειρά s. Επίσης η εντολη a = input("prompt") «διαβάζει» μια συμβολοσειρά από το πληκτρολόγιο αφού τυπώσει το μήνυμα prompt. Τέλος, η εντολή m = int(s) μετατρέπει τη συμβολοσειρά s, η οποία περιέχει μόνο τα ψηφία ενός ακεραίου αριθμού, σε έναν ακέραιο αριθμό και τον αποθηκεύει στη μεταβλητή m. Χρησιμοποιώντας αυτά τα δεδομένα, απλοποιήστε τον παραπάνω κώδικα.
Άσκηση 3.
Γράψτε ένα πρόγραμμα που θα βρίσκει τους ναρκισσιστικούς αριθμούς από το 10 ως το 1.000.000.000. Υπόδειξη: Η εντολή y = len(str(x)) βρίσκει από πόσα ψηφία αποτελείται ο ακέραιος αριθμός που είναι αποθηκευμένος στη μεταβλητή x.
Απαντήσεις στις ασκήσεις
-
for n in range(100,1000): temp = n c = 0 while n > 0: a = n % 10 n = n // 10 c = c + a ** 3 if temp == c: print("Το",temp, "είναι ναρκισσιστικός αριθμός")
-
Ημερολόγιο
Ανακοινώσεις
Όλες...- - Δεν υπάρχουν ανακοινώσεις -