Το i είναι πάντα ο πρώτος αριθμός (πρώτος στην σειρά εννοώ) που έχει τέλεια διαίρεση με τον number.
Ας πούμε ότι ο number ισούται με 6798. Τότε ο i θα είναι 2.
Από την διαίρεση 6798 / 2 παίρνουμε το αποτέλεσμα 3399.
Προφανώς όλοι οι αριθμοί από το 3399 μέχρι το 6798 ΔΕΝ είναι διαιρέτες του 6798 οπότε δεν έχει νόημα να εξετάσουμε αν ο 6798 διαιρείται απ' αυτούς.
Οπότε συνεχίζουμε με αυτόν τον τρόπο να βρίσκουμε τους διαιρέτες μέχρι να βρούμε κάποιον που να είναι πρώτος αριθμός.
Ο πρώτος στην σειρά που θα βρούμε ότι είναι πρώτος αριθμός θα είναι και ο μέγιστος πρώτος διαιρέτης.
Προφανώς όλοι οι διαιρέτες που θα βρίσκουμε εκτός από διαιρέτες της τιμής που έχει ο number εκείνη την στιγμή θα είναι και διαιρέτες της πρώτης - πρώτης τιμής του number, δηλαδή του 6798. Γενικώς ισχύει ότι κάθε διαιρέτης ενός αριθμού x είναι και διαιρέτης των πολλαπλάσιων του x.
Επίσης πρόσεξε κάτι άλλο.
Το loop "for (; i < number; i++)" δεν δίνει εκ νέου τιμή στο i, αλλά κρατάει την τιμή του i στην οποία έχει φτάσει σε προηγούμενες επαναλήψεις.
Δηλαδή ένα άλλο παράδειγμα:
number = 62437, οπότε ο i στην διαίρεση θα είναι ο αριθμός 29.
Ο number θα γίνει δηλαδή: number = 62437 / 29 = 2153
Θα πρέπει να συνεχίσουμε να ψάχνουμε για διαιρέτες του 2153. Όμως ξέρουμε ότι οι διαιρέτες αυτοί θα είναι αναγκαστικά μεγαλύτεροι από 29 (το τελευταίο i).
Όλοι οι προηγούμενοι αριθμοί (2 - 29), αφού δεν διαιρούσαν το 62437 δεν θα διαιρούν ούτε το 2153.
Ελπίζω να κατάλαβες.



