【发布时间】:2015-10-20 01:14:02
【问题描述】:
我想先声明一下,我是一个 python 新手,我很感激任何能清楚完整地向我解释的人。
我正在查看以下链接中的代码:
http://rosettacode.org/wiki/Sieve_of_Eratosthenes#Python
我刚刚开始了解迭代器、生成器和 yield 命令,但我不明白 set 实现的代码是如何工作的。
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)) 时间吗?
【问题讨论】:
-
谢谢格雷戈尔。感谢您抽出宝贵时间告诉我这一点,下次遇到问题时,我一定会牢记这一点
标签: python sieve-of-eratosthenes