3

コードは次のとおりです。

list = [2, 3, 5, 7, 11, 13]
list2 = [range(list[-1], 2000000)]
y =11
x = 1
v = list[-1]>= x
while list[-1] ** 2 < 2000000:
    y= y + 2
    prime = True
    while prime == True:    
        for x in list:
            if x * 2 < y:   
                if y % x == 0:
                    prime = False
                    break
        if prime == True:
            list.append(y)
            prime = False
print sum(list)

for u in list:
    for w in list2:
        if u * u < w:
            if w % u == 0:
                list2.pop(w)
print list
print sum(list) + sum(list2)

ご覧のとおり、これはふるいを作成し、最大200万個のふるいをかける基本的なプログラムです。それはプロジェクトオイラーのためのものであり、私はプログラミングを学ぶときに自分のスキルをテストしようとしています。

現在、この投稿のタイトルが付けられているエラーは23行目にあります。これが発生している理由は何ですか。

4

1 に答える 1

8

range()すでにリストを返しますが、それを新しいリストに入れます。

list2 = [range(list[-1], 2000000)]

これにより、リストを含むリストが作成され、w後で全範囲に設定されます。そこでブラケットを外すだけです。

>>> [range(5)]
[[0, 1, 2, 3, 4]]
>>> range(5)
[0, 1, 2, 3, 4]
于 2012-09-13T17:30:10.930 に答える