只是澄清,这不是一个功课问题:) 我想为我正在构build的math应用程序find素数,并遇到了Eratosthenes的Sieve方法。 我已经用Python写了一个实现。 但速度非常慢。 比方说,如果我想find所有不到200万的素数。 它需要> 20分钟。 (我在此停止)。 我怎样才能加快速度呢? def primes_sieve(limit): limitn = limit+1 primes = range(2, limitn) for i in primes: factors = range(i, limitn, i) for f in factors[1:]: if f in primes: primes.remove(f) return primes print primes_sieve(2000) 更新:我结束了对这个代码进行分析,发现花费了相当多的时间从列表中删除一个元素。 相当可以理解,考虑到它必须遍历整个列表(最坏的情况)来find元素,然后删除它,然后重新调整列表(也许一些副本呢?)。 无论如何,我抽出了字典的名单。 我的新实现 – def primes_sieve1(limit): limitn = limit+1 primes = dict() for i […]