from datetime import datetime
d1=datetime.now()
def eratosthenes():
'''Yields the sequence of prime numbers via the Sieve of Eratosthenes.'''
D = {} # map composite integers to primes witnessing their compositeness
q = 2 # first integer to test for primality
while 1:
if q not in D:
yield q # not marked composite, must be prime
D[q*q] = [q] # first multiple of q not already marked
else:
for p in D[q]: # move each witness to its next multiple
D.setdefault(p+q,[]).append(p)
del D[q] # no longer need D[q], free memory
q += 1
suma=0
for i in eratosthenes():
if i>2000000:
break
suma+=i
print(suma)
print (datetime.now()-d1)
ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKZDE9ZGF0ZXRpbWUubm93KCkKZGVmIGVyYXRvc3RoZW5lcygpOgogICAgICAgICcnJ1lpZWxkcyB0aGUgc2VxdWVuY2Ugb2YgcHJpbWUgbnVtYmVycyB2aWEgdGhlIFNpZXZlIG9mIEVyYXRvc3RoZW5lcy4nJycKICAgICAgICBEID0ge30gICMgbWFwIGNvbXBvc2l0ZSBpbnRlZ2VycyB0byBwcmltZXMgd2l0bmVzc2luZyB0aGVpciBjb21wb3NpdGVuZXNzCiAgICAgICAgcSA9IDIgICAjIGZpcnN0IGludGVnZXIgdG8gdGVzdCBmb3IgcHJpbWFsaXR5CiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgIGlmIHEgbm90IGluIEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHEgICAgICAgICMgbm90IG1hcmtlZCBjb21wb3NpdGUsIG11c3QgYmUgcHJpbWUKICAgICAgICAgICAgICAgICAgICAgICAgRFtxKnFdID0gW3FdICAgIyBmaXJzdCBtdWx0aXBsZSBvZiBxIG5vdCBhbHJlYWR5IG1hcmtlZAogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gRFtxXTogIyBtb3ZlIGVhY2ggd2l0bmVzcyB0byBpdHMgbmV4dCBtdWx0aXBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQuc2V0ZGVmYXVsdChwK3EsW10pLmFwcGVuZChwKQogICAgICAgICAgICAgICAgICAgICAgICBkZWwgRFtxXSAgICAgICAjIG5vIGxvbmdlciBuZWVkIERbcV0sIGZyZWUgbWVtb3J5CiAgICAgICAgICAgICAgICBxICs9IDEKc3VtYT0wCmZvciBpIGluIGVyYXRvc3RoZW5lcygpOgogICAgICAgIGlmIGk+MjAwMDAwMDoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgc3VtYSs9aQpwcmludChzdW1hKQpwcmludCAoZGF0ZXRpbWUubm93KCktZDEp