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

# Εισαγωγή βιβλιοθήκης σχετική με το χρόνο
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
    # Αρχικοποίηση μετρητή i με την τιμή 2
    i=2
    # Αρχικοποίηση σημαίας diaireitai με τη τιμή False
    diaireitai=False
    # Επανάληψη while για όσο διάστημα ο μετρητής i
    # είναι μικρότερος του αριθμού που ελέγχεται και
    # ταυτόχρονα δεν διαιρείται μέχρι στιγμής με κάποιον αριθμό
    while  i<arithmos_poy_elegxetai and diaireitai==False:
        # Εάν ο αριθμός που ελέγχεται διαιρείται ακριβώς με τον
        # αριθμό i τότε η σημαια diaireitai λαμβάνει τιμή True
        if arithmos_poy_elegxetai%i==0:
            diaireitai=True
        i=i+1
    # Εξέταση εάν η σημαία diaireitai είναι False δηλαδή δεν 
    # βρέθηκε αριθμός που διαιρεί ακριβώς τον αριθμό που ελέγχεται
    if diaireitai==False:
        # Εάν ναι, τότε το τρέχον πλήθος πρώτων αριθμών που έχει βρει
        # το πρόγραμμα αυξάνει κατά 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("Ευχαριστούμε που χρησιμοποιήσατε το Πρόγραμμα Εύρεσης \
Πρώτων Αριθμών") 

    
