topografoi.com



Author Topic: Άσκηση: Πρώτοι αριθμοί  (Read 11041 times)

chiossif

  • Posts: 334
Άσκηση: Πρώτοι αριθμοί
« on: 27 Ιουλ 2010, 11:52 »
Γεια και χαρά σε όλους.

Είναι ένα απ'τα πολλά αγαπημένα μου θέματα:

Να γραφτεί ένα πρόγραμμα σε python το οποίο να εμφανίζει όλους τους πρώτους αριθμούς που είναι μικρότεροι του Ν.

Ακολουθήστε τα ακόλουθα βήματα:

0. Μάθετε python και τι είναι πρώτοι αριθμοί. :-)

1. Όσοι διαβάσατε έως εδώ: σταματήστε να διαβάζετε και ορμήστε να το λύσετε. Χρησιμοποιείστε IDLE και πριν ανεβάσετε την λύση σας συγκρίνετε τα αποτελέσματά σας με τους πρώτους αριθμούς που θα βρείτε εδώ. Δοκιμάστε τιμές για το Ν όπως 2,3,4,5,11,12,-1,0 ή και όσες άλλες θέλετε. Υπάρχει κάποιος λόγος που τις διαλέξατε για έλεγχο; Στην απάντησή σας συμπεριλάβετε και τα προβλήματα ή σφάλματα που αντιμετωπίσατε.

2. Ιδού μια παραλλαγή της άσκησης: "Να γραφτεί ένα πρόγραμμα σε python το οποίο να εμφανίζει όλους τους Ν πρώτους αριθμούς". Λύστε την.

3. Ξανά διάβασμα: δείτε την προτινόμενη λύση μου στην αρχική εκφώνηση. Μελετήστε την προσεκτικά. Την καταλάβατε; Μπορείτε να την βελτιώσετε συντακτικά ή/και αλγοριθμικά; (Συντακτική βελτίωση είναι η βελτίωση στο γράψιμο του προγράμματος ενώ αλγοριθμική στον αλγόριθμο τον οποίο υλοποιεί με σκοπό είτε την αύξηση της ταχύτητας εκτέλεσης είτε την οικονομία μνήμης είτε οτιδήποτε... :-) )

Αφού φτάσατε έως εδώ απλά συντάξτε ως συνάρτηση τον καλύτερο αλγόριθμο που εντοπίσατε και μοιραστείτε τον μαζί μας (πάντα σε gplv3 :-) )

Καλή διασκέδαση :-)

vagvaf

  • Administrator
  • Posts: 204
  • Gender: Male
  • Not all those who wander are lost.
Απ: Άσκηση: Πρώτοι αριθμοί
« Reply #1 on: 29 Ιουλ 2010, 17:15 »
Η δικιά μου λύση για το πρώτο μέρος είναι αυτή.

Εκτελεση:

Αοίγμα με IDLE -> Run -> Run Module και γράφουμε primeslt(n), όπου n ο αριθμός που επιθυμούμε.

I ♥ Python's Standard Library
Ⓐ▼▲ Ⓐ▼▲

chiossif

  • Posts: 334
Απ: Άσκηση: Πρώτοι αριθμοί
« Reply #2 on: 30 Ιουλ 2010, 10:30 »
@vagvaf: Μπράβο...

...συνέχισε με το 2ο βήμα.

@rest: Οι λοιποί ΜΗΝ συνεχίζετε την ανάγνωση... θα μαρτυρηθούν μυστικά :-)

Καλό κώδικα.

vagvaf

  • Administrator
  • Posts: 204
  • Gender: Male
  • Not all those who wander are lost.
Απ: Άσκηση: Πρώτοι αριθμοί
« Reply #3 on: 01 Αυγ 2010, 13:06 »
Ανέπτυξα λίγο την ιδέα του chiossif

Η ιδέα είναι η ίδια, απλά είναι γραμμένο με 3 συναρτήσεις. Το module δουλεύει ως εξής:

Η τρίτη συνάρτηση lprod(l) απλά υπολογίζει το γινόμενο όλων των στοιχείων μιας λίστας.
Η δεύτερη συνάρτηση isprime(x) υπολογίζει αν ένας αριθμός είναι πρώτος ή όχι. Για να το κάνει αυτό καλέι την lprod(l).
Η πρώτη συνάρτηση primes(n) καλεί την δεύτερη και υπολογίζει όλους τους πρώτους αριθμούς που είναι μικρότεροι του n.

Επίσης, σε αυτή την μορφή το πρόγραμμα είναι πιο python-like και δίνεται η δυνατότητα να μελετηθεί ο τρόπος που μια συνάρτηση χρησιμοποιεί άλλες συναρτήσεις για να κάνει τη δουλειά της. Με αυτόν τον τρόπο (το σπάσιμο δλδ του προγράμματος σε μικρές συναρτήσεις) κάποιος μπορει να χρησιμοποιήσει της επί μέρους συναρτήσεις για άλλους σκοπούς.


EDIT: ο κωδικας βγήκε επειδή βρέθηκε κάποιο πολυ σοβαρό bug



« Last Edit: 01 Αυγ 2010, 20:20 by vagvaf »
I ♥ Python's Standard Library
Ⓐ▼▲ Ⓐ▼▲

 

Copyright © topografoi.com