<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
'''
 * Arquivo: crivo.py
 * ----------------
 * Este programa determina todos os primos menores que n, para um dado n.
 * Para isso, usa o metodo conhecido como o Crivo de Eratostenes.
 *
 * O programa faz uso de um vetor a[0..n-1] que e' inicializado com 1.
 * (Note que os indices 1..n-1 sao exatamente os numeros que desejamos 
 *  descobrir se sao primos ou nao.)
 * 
 * No final, as entradas desse vetor serao 0 ou 1, sendo que 
 *   a[i] = 1 indica que i e' primo e
 *   a[i] = 0 indica que i nao e' primo.
 * 
 *
 
'''

def main():
    
    n = int(input("De o valor de n (menor que 10000)"))
    a = [ ]    # cria lista vazia a

    # inicializacao da lista a com valor 1 em todas as posicoes
    for i in range(n):   # para i variando de 0 a n-1   
        a.append(1)      # acrescente 1 no final da lista a.
                         # Com isso, inicializamos a lista a com 1 em todas as posicoes
                         
    for i in range(2,n):
        if a[i] == 1:          
           j = i
           while i * j &lt; n:
               a[i * j] = 0
	           j += 1

    print("Numeros primos menores que ", n)           
    for i in range(2,n):
        if (a[i]==1): printf(i)

'''
 ---  Você entendeu por que j começa em i? E por que zeramos as posicoes i*j?
 
 ---  O que acontece se o teste "if (a[i])" for retirado? 
 
'''

</pre></body></html>