Q:

Intento de Criba de Eratostenes en python

Hola estoy intentando hacer un codigo utlizando el metodo Criba de Eratostenes pero me confundo en la parte de ir multiplicando y eliminar de la lista el numero que no es primo,la profesora dice debemos usar un del o algo asi para eliminar el numero que esta en la lista pero no como es la sintaxis ni nada.
n=int(raw_input("Ingrese un numero: "))
lista=[]
i=2
i2=1
cont=0
while i<n:
   lista.append(i)
   i+=1
   while cont <n:
      yu=cont*i
      if yu == lista[]
print lista    

Esto es lo que llevo y me confundo en como hacer el resto, si pueden ayudarme se los agradeceria mucho

A:

Hay múltiples formas de resolver este problema. Como mencionaste que se "debe" usar un del o algo asi entonces partiendo de esa forma, lo que hice fue generar una lista comenzando del 2 hasta el numero introducido por teclado. Luego se itera con un while mientras el cuadrado del elemento actual sea menor o igual que el numero introducido por teclado. Luego un for recorrerá todos los numeros actuales de la lista y preguntará si ese numero es divisible entre el elemento actual del while. Si es así, entonces se borra de la lista, alterandola.
Cuando el cuadrado del elemento actual (del while) es mayor que el numero introducido por teclado, se finaliza el programa y la lista resultante con puros numeros primos.
n = int(raw_input("Ingrese un numero: "))
lista = list(range(2, n+1))

i = 0
while(lista[i]*lista[i] <= n):
    # Mientras el cuadrado del elemento actual sea menor que el ultimo elemento
    for num in lista:
        if num <= lista[i]:
            # Cada iteracion del while hace que el for comience desde el primer elemento. 
            # Esto es para omitir los numeros primos ya encontrados
            continue
        elif num % lista[i] == 0:
            # Si un numero es divisible entre el elemento actual del while
            # de ser asi, entonces eliminarlo de la lista (esto altera la lista)
            lista.remove(num)
        else:
            # Si no es divisible, entonces omitirlo (no hacer nada)
            pass
    i += 1 # Incrementa al siguiente elemento de la lista (que ha sido alterada)

print lista

