решето Эратосфена

Sieve of Eratosthenes
решето Эратосфена
Предполагается, что ученики знакомы с понятием простых чисел.
Первые 4 скрипта — подготовительно-разминочные.

x=38

while x>0:
    print(x)
    x-=1
x=38
y=0

while x>0:
    if y%2!=0:
        print(y)
    y+=1
    x-=1
x=38
y=0
z=[]

while x>0:
    if y%2!=0:
        z.append(y)
    y+=1
    x-=1
print(z)
x=38
y=0
z=[]


while x>0:
    z.append(y)
    y+=1
    x-=1
print("все числа:",z)

for i in range(len(z)):#убираем кратные 2
    if z[i]%2==0:
        z[i]=0

print("оставшиеся числа:",z)
x=100 # наше число
y=2 # начало отсчета (0 и 1 нам не нужны, это не простые числа)
z=[] # создали массив для ВСЕХ чисел от 2 до x

while x>1: # заполняем массив
    z.append(y)
    y+=1
    x-=1
print("все числа:",z,"\n")


#начинаем "решето Эратосфена" (частный пример)

for i in range(len(z)):#смотрим массив с 2
    print("смотрим элемент",z[i])
    if z[i]!=0: # если элемент не 0...
	
        for j in range(i+1,len(z)): #то сравним все последующие элементы массива с текущим
            print("inner, elem",z[j],end=". ")
            if (z[j]%z[i])==0 and z[j]!=0: # и, если найдём кратные (!=0, чтобы не обнулять нуль)...
               print("кратно",z[i],", обнуляем")
               z[j]=0 #то безжалостно обнуляем.
            else:
                print("")
    else:
        print("элемент равен 0")
    print("... просмотрели массив \n")
    
print("оставшиеся числа:",z) # всё, что не равно 0 - простые числа

final=[] #Перенос значений в финальный массив:
for i in range(len(z)):
    if z[i]!=0:
        final.append(z[i])
        
print("простые числа:",final) # только простые числа