#решето Эратосфена
def Eratos(resheto,n):
j=0
p=resheto[j]
while n>p**2:
for i in resheto:
if i>2*p and i%p== 0:
resheto.remove(i)
j+=1
p=resheto[j]
return resheto
n=input('Input high number:')
resheto=[i for i in range(2,n) ]
resheto=Eratos(resheto,n)
print resheto
З.Ы. Один недостаток я вижу, она бежит в каждом for по всему списку же, интересно можно ли заставить for бежать не с самого начала, а начиная с i-отго элемента. Потому что сама проблема вот в чем: например переменная p принимает значение 2, исключаются все элементы кратные двум, потом 3й-ке. При этом когда будет бежать по списку, то 2-йка то же будет взята в обработку, а все элементы, находящиеся до i-ого элемента нужно исключить из рассмотрения.
Пример:
Проверяем на кратность 3-ке, элемент с индексом ноль можно сразу проскочить.