# Πρόγραμμα Εύρεσης Πρώτων Αριθμών- Εκδοση 1 (χρήση while & for)

# Εισαγωγή βιβλιοθήκης σχετική με το χρόνο
import time

# Εμφάνιση Μηνύματος Καλωσορίσματος
print("Καλώς Ήρθατε στο Πρόγραμμα Εύρεσης Πρώτων Αριθμών")
print()

# Αρχικοποίηση μετρητή του πλήθους των πρώτων αριθμών που
# έχουν βρεθεί μέχρι στιγμής, με την τιμή 0
trexon_plithos_proton=0

# Αρχικοποίηση της μεταβλητής που περιέχει τον αριθμό που ελέγχεται 
# εκείνη τη στιγμή για τον εάν είναι πρώτος, με τη τιμή 2.
arithmos_poy_elegxetai=2

# Εισαγωγή του επιθυμητού αριθμού πρώτων αριθμών που ζητά ο χρήστης
print("Εισάγετε τον αριθμό των πρώτων αριθμών που θέλετε βρείτε:")
epithimito_plithos_proton=int(input())

# Καταγραφή χρόνου έναρξης εύρεσης πρώτων αριθμών
enarxi = time.time()
print("A/A  Πρώτος Αριθμός")

# Χρήση εντολής επανάληψης while
# Η επανάληψη θα συνεχίζεται για όσο διάστημα το τρέχον πλήθος
# πρώτων αριθμών είναι μικρότερο από τον επιθυμητό αριθμό
# πρώτων αριθμών που ζήτησε ο χρήστης
while trexon_plithos_proton<epithimito_plithos_proton :
    # Αρχικοποίηση μετρητή διαιρετών του αριθμού που ελέγχεται
    plithos_diaireton=0
    # Επανάληψη for για όλους τους ακέραιους από το 2 έως
    # τον προηγούμενο του αριθμού που ελέγχεται
    for i in range(2,arithmos_poy_elegxetai,1):
        # Εάν ο αριθμός που ελέγχεται διαιρείται ακριβώς με
        # τον αριθμό i τότε το πλήθος των διαιρετών του αριθμού
        # που ελέγχεται αυξάνει κατά 1
        if arithmos_poy_elegxetai%i==0:
            plithos_diaireton=plithos_diaireton+1
    # Έλεγχος εάν το πλήθος των διαιρετών του
    # αριθμού που ελέγχεται είναι 0
    if plithos_diaireton==0:
        # Εάν ναι, τότε το τρέχον πλήθος πρώτων αριθμών που έχει βρει
        # το πρόγραμμα αυξάνει κατά 1 και
        # ο νέος πρώτος αριθμός που βρέθηκε εμφανίζεται στο χρήστη
        trexon_plithos_proton=trexon_plithos_proton+1
        print(" ",trexon_plithos_proton,"   ",arithmos_poy_elegxetai)
    # Ο αριθμός που ελέγχεται αυξάνει κατά 1 ώστε να εξεταστεί
    # εάν είναι πρώτος 
    arithmos_poy_elegxetai=arithmos_poy_elegxetai+1

# Καταγραφή χρόνου λήξης εύρεσης πρώτων αριθμών
lixi = time.time()
# Υπολογισμός χρόνου εύρεσης πρώτων αριθμών
xronos_ektelesis=lixi-enarxi
print("Xρόνος Εκτέλεσης", '%.2f' %xronos_ektelesis, "δευτερόλεπτα")
            
# Εμφάνιση Μηνύματος Τέλους
print()
print("Ευχαριστούμε που χρησιμοποιήσατε το Πρόγραμμα Εύρεσης \
Πρώτων Αριθμών") 

    
