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) # только простые числа