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

Python for loop: “list index out of range” error?

我有一个代码,基于项目Euler的问题3:"13195的主要因素是5、7、13和29。数字600851475143的最大主因子是什么?"

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
2
for j in range(len(res)):
    for k in range(2,res[j]):

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