# -*- encoding:utf8 -*-

# Importer les fonctions nécessaires:

from math import sqrt


# Définition de fonctions:

def generePremiers(n):
    """
    generePremiers(int n) --> list.
    Retourne la liste des nombres premiers
    situés entre 2 et n selon le crible d'Erathosthène.
    """

    indicesPremiers = [1]*(n+1)       # liste de n+1 entiers 1 d'indice premier

    i = 2

    while i <= sqrt(n):
        
        if indicesPremiers[i] == 1:     # si l'indice i est premier
            j = i                       # traiter ses multiples inférieurs à n
            while j*i <= n:
                indicesPremiers[j*i] = 0
                j += 1

        i += 1


    # Générer la liste des nombres premiers

    nbresPremiers = []

    i = 2

    while i <= n:
        if indicesPremiers[i]:          # faux uniquement si indicesPremiers[i] est nul
            nbresPremiers.append(i)
        i += 1

    return nbresPremiers

# Programme principal:

n = int(input("Entrez un entier positif supérieur à 2: "))

print("La liste des nombres premiers entre 2 et", n, "est: ")
print(generePremiers(n))
