作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有这个函数可以用埃拉托色尼筛法计算素数。我有一个错误,我不明白为什么。
def era1(n):
llista1 = []
llista2 = []
i = 2
while(i<(n+1)):
llista1.append(i)
i = i + 1
while (llista1[0]<(n**0.5)):
llista2.append(llista1[0])
for j in range ((len(llista1))-1):
if (llista1[j] % llista1[0] == 0) : #<------- error list index out of range
llista1.remove(llista1[j])
llista1.remove(llista1[0])
print llista2
最佳答案
这是在遍历列表时删除列表中的项目的结果。您已经指定您的 for 循环运行 n
次,但是当您到达第 n 个项目时,曾经存在的项目已经移回了几个索引,因为您从列表中删除项目。
您需要重新考虑重新实现 Sieve 的方法。我不能 100% 遵循您的方法,但我确信它可能涉及到有一个辅助列表。白名单,不要黑名单:)。
此外,enumerate()
是一个值得研究的很酷的函数。
关于python - 埃拉托色尼筛法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46754729/
我正在尝试编写一个函数,使用 "Sieve of Sundaram" algorithm 从 1..n 计算所有奇数素数. 这是我的尝试: sSund :: Integer -> [Integer]
我是 Haskell 的新手,对于我正在实现的事情,我需要一个素数列表。我试着写一个,但它太慢了。 这是我尝试过的。 primeList = primes 1000 primes :: Int ->
我是一名优秀的程序员,十分优秀!