Я хотел сначала предисловие, что я новичок в python и что я любезен со всеми, кто может объяснить это мне ясно и полностью.
Я смотрел на код, найденный в ссылке ниже:
http://rosettacode.org/wiki/Sieve_of_Eratosthenes#Python
Я только начал понимать итераторы, генераторы и команду yield, но я не понимаю, как работает код для реализации набора.
def eratosthenes2(n):
multiples = set()
for i in range(2, n+1):
if i not in multiples:
yield i
multiples.update(range(i*i, n+1, i))
Мне трудно понять, что делает последняя строка в этой функции.
Кроме того, может ли кто-нибудь объяснить мне, почему эта реализация занимает время O (log (n))?