Programme python

Fermé
TIm - 19 déc. 2018 à 19:24
 pyronron - 19 déc. 2018 à 20:05
Bonsoir, j'aurais besoin d'aide pour réaliser ce programme, j'ai suivi jusqu'à l'étape 2 mais me retrouver avec quelque chose d'incorrect m’empêchant d'avancer, voilà ce que j'ai fait :

j=0
ListeElt = 1000*[1]
for i in range(2,len(ListeElt),1) :
if (ListeElt[i])==1:
j=i
j=j+i
while j<1000:
ListeElt[j]=0
print (ListeElt)

1°) Créer une liste, nommé ListeElt, de 1000 éléments 1.
2°) Parcourir cette liste à partir de l’élément d’indice 2 : si l’élément analysé possède la valeur 1 , mettre à zéro tous les autres éléments de ListeElt dont les indices sont des multiples entiers de l’indice de l’élément analysé (par exemple, avec l’indice 3, éliminer les éléments d’indice 6, 9, 12...)
Une fois la liste ListeElt traitée, il faudra :
3°) Créer une liste vide pour stocker les nombres premiers, nommée nbPremiers.
4°) En parcourant de nouveau ListeElt , stocker dans nbPremiers l'indice des éléments de ListeElt dont la valeur est 1.
5°) Afficher la liste des nombres premiers.

merci d'avance pour votre aide

1 réponse

Bonsoir.

Un petit range avec le pas d'incrémentation au lieu de ta boucle while est bien plus judicieux.

listeElt = [True] * 1000
nbElt = len(listeElt)
listeElt[0] = False # sup. du zéro

for i in range(2, nbElt):
    if listeElt[i]:
        for j in range(i*2, nbElt, i):
            listeElt[j] = False

print(', '.join(str(i) for i, v in enumerate(listeElt) if v))
0