Python for循环:“列表索引超出范围”错误?

时间:2017-02-17 18:43:22

标签: python for-loop prime-factoring

根据Project Euler的问题3,我有一个代码:“13195的主要因素是5,7,13和29. 600851475143中最大的素数因素是什么?”

我有一个我认为可行的代码,但第9行(for k in range(2,res[j]):)不断返回错误:“IndexError:list index out of range”。当我在for循环中移动时,似乎我没有修改我的列表,所以我不确定是什么问题。

def find_primes(num):
    res = []
    print(num)

    for i in range(2,num):
        if num%i==0:
            res.append(i)

    for j in res:
        for k in range(2,res[j]):
           if res[j]%k==0:
               res[j]=False
    list(filter((False).__ne__, res))

    m = max(res)
    return(m)

有谁知道我哪里出错了?

谢谢!

1 个答案:

答案 0 :(得分:2)

你可能打算这样做:

for j in range(len(res)):
    for k in range(2,res[j]):

使用for j in res会迭代res元素。