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))

この問題はエラトステネスの篩を使うべきですね.前回のと若干変えたので新しく載せてます.