2017-02-17 9 views
0

Project Eulerの問題3に基づいてコードを作成しました。「13195の素因数は5,7,13および29です.600851475143の最大の素因数は何ですか?Python forループ:「リストインデックスが範囲外です」エラー?

私は思っていた以下のコードがありますが、9行目(for k in range(2,res[j]):)はエラーを返し続けます。 "IndexError:リストのインデックスが範囲外です"。 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) 

どこが間違っているのか分かりませんか?

ありがとうございました!あなたはおそらく行うためのもの

+0

コードに正しい字下げがありません。私たちがあなたを助けることができるように修正してください! – Arman

+0

'res [j]'は 'res'の' j'番目の項目に行き、 'res'は長さよりも大きい数字を持つためです。 – TemporalWolf

+0

ループ構造に関するチュートリアルを確認する必要があります。 – TigerhawkT3

答えて

2

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

for j in resを使用するには、res以上の要素を反復処理します。

+1

あなたは範囲内のjを意味します(len(res)): – tennabey

+0

あなたは正しいです、私は考えていませんでした。手伝ってくれてどうもありがとう! –

+0

@tennabey私の悪い、編集 –

関連する問題