Problem 10
def es(n): n /= 2 plis = [2] chk = [True for i in xrange(n)] for i in xrange(n): if chk[i]: p = i * 2 + 3 for j in xrange(i+p,n,p): chk[j] = False for i in xrange(n): if chk[i]: plis.append(i * 2 + 3) return plis print sum(es(2*10**6))
この問題はエラトステネスの篩を使うべきですね.前回のと若干変えたので新しく載せてます.