, вероятно, есть много способов улучшить это, но больше всего меня удивляет то, почему у вас есть updateList и PrimeList, вы продолжаете удалять и копировать их на каждой итерации. Это занимает больше времени, так как списки становятся длиннее. Избавление от одного из них было бы моим первым изменением.
def PrimeSieve(curNum):
prime = True
addSet = set()
delSet = set()
for cp in PrimeSet:
daPrime, daSkip = cp
if curNum == daSkip:
prime = False
addSet.add((daPrime, daSkip + daPrime))
delSet.add(cp)
if prime:
addSet.add((curNum, 2 * curNum))
PrimeSet.difference_update(delSet)
PrimeSet.update(addSet)
return prime
PrimeSet = set()
for x in range(2, 11111):
print(x, PrimeSieve(x))
(Редактировать: заменить список набором для эффективной замены)