Αγόρασες ένα μεγάλο κουτί με διάφορα εξαρτήματα υπολογιστή σε ένα γκαράζ σέιλ. Άρχισες να συναρμολογείς τα εξαρτήματα για να φτιάξεις υπολογιστές στα μέτρα σου.
Θέλεις να δοκιμάσεις την απόδοση διαφορετικών συνδυασμών εξαρτημάτων και αποφασίζεις να φτιάξεις το δικό σου πρόγραμμα μέτρησης επιδόσεων, για να δεις πώς συγκρίνονται οι υπολογιστές σου. Επιλέγεις τον διάσημο αλγόριθμο "Κόσκινο του Ερατοσθένη", έναν αρχαίο αλγόριθμο, αλλά που θα πιέσει τους υπολογιστές σου στα όριά τους.
Η αποστολή σου είναι να δημιουργήσεις ένα πρόγραμμα που υλοποιεί τον αλγόριθμο του Κόσκινου του Ερατοσθένη για να βρεις όλους τους πρώτους αριθμούς που είναι μικρότεροι ή ίσοι με έναν δεδομένο αριθμό.
Ένας πρώτος αριθμός είναι ένας αριθμός μεγαλύτερος του 1 που διαιρείται μόνο με το 1 και τον εαυτό του. Για παράδειγμα, οι 2, 3, 5, 7, 11 και 13 είναι πρώτοι αριθμοί. Αντίθετα, ο 6 δεν είναι πρώτος αριθμός, καθώς δε διαιρείται μόνο με το 1 και τον εαυτό του, αλλά και με το 2 και το 3.
Για να χρησιμοποιήσεις το Κόσκινο του Ερατοσθένη, πρώτα δημιουργείς μια λίστα με όλους τους αριθμούς από το 2 μέχρι τον δεδομένο αριθμό σου. Στη συνέχεια επαναλαμβάνεις τα παρακάτω βήματα:
Συνεχίζεις να επαναλαμβάνεις αυτά τα βήματα μέχρι να περάσεις από κάθε αριθμό στη λίστα σου. Στο τέλος, όλοι οι αριθμοί που δεν έχουν σημειωθεί είναι πρώτοι.
Τα tests δεν ελέγχουν ότι έχεις υλοποιήσει τον αλγόριθμο, μόνο ότι έχεις βρει τη σωστή λίστα με τους πρώτους αριθμούς. Για να ελέγξεις ότι υλοποιείς σωστά το Κόσκινο, μια καλή πρώτη δοκιμή είναι να ελέγξεις ότι δεν χρησιμοποιείς πράξεις διαίρεσης ή υπολοίπου.
Ας πούμε ότι βρίσκεις τους πρώτους αριθμούς που είναι μικρότεροι ή ίσοι με το 10.
Έχεις εξετάσει όλους τους αριθμούς και βρήκες ότι οι 2, 3, 5 και 7 παραμένουν χωρίς σημείωση, που σημαίνει ότι είναι οι πρώτοι αριθμοί που είναι μικρότεροι ή ίσοι με το 10.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Delphi Pascal με 76 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.
Εξερευνούμε διάφορες προσεγγίσεις για το Κόσκινο του Ερατοσθένη, ξεκινώντας με εμφωλευμένους βρόχους και οκνηρή αξιολόγηση, περνώντας μετά στα σύνολα και, τέλος, στην αναδρομή.