m = range(1, 2000000, 2)
sum1 = 2
for x in xrange(1, 2000000, 2):
for y in m:
if x != y:
if x%y == 0:
m.remove(x)
if all(x%y != 0):
sum1 += x
それが私が書いたものです。200 万以下のすべての素数を追加しようとする問題です。私の問題は all() ステートメントにあります。私がやりたいことは、x が素数かどうかを確認することです。これは、すべての x%y が剰余を与える場合にのみ真です。
また、ステートメント (break?) を使用して、y > x/3 の場合にループを停止できます。
m = range(1, 2000000, 2)
sum1 = 2
for x in xrange(1, 2000000, 2):
for y in m:
if y > x/3:
break
else:
if x != y:
if x%y == 0:
m.remove(x)
if all(x%y != 0):
sum1 += x