def sieve(n):
m = (n-1) // 2
b = [True]*m
i,p,ps = 0,3,[2]
while p*p < n:
if b[i]:
ps.append(p)
j = 2*i*i + 6*i + 3
while j < m:
b[j] = False
j = j + 2*i + 3
i+=1; p+=2
while i < m:
if b[i]:
ps.append(p)
i+=1; p+=2
return ps
print "primos encontrados: ", len(sieve(60023))
ZGVmIHNpZXZlKG4pOgogICAgbSA9IChuLTEpIC8vIDIKICAgIGIgPSBbVHJ1ZV0qbQogICAgaSxwLHBzID0gMCwzLFsyXQogICAgd2hpbGUgcCpwIDwgbjoKICAgICAgICBpZiBiW2ldOgogICAgICAgICAgICBwcy5hcHBlbmQocCkKICAgICAgICAgICAgaiA9IDIqaSppICsgNippICsgMwogICAgICAgICAgICB3aGlsZSBqIDwgbToKICAgICAgICAgICAgICAgIGJbal0gPSBGYWxzZQogICAgICAgICAgICAgICAgaiA9IGogKyAyKmkgKyAzCiAgICAgICAgaSs9MTsgcCs9MgogICAgd2hpbGUgaSA8IG06CiAgICAgICAgaWYgYltpXToKICAgICAgICAgICAgcHMuYXBwZW5kKHApCiAgICAgICAgaSs9MTsgcCs9MgogICAgcmV0dXJuIHBzCgpwcmludCAicHJpbW9zIGVuY29udHJhZG9zOiAiLCBsZW4oc2lldmUoNjAwMjMpKSA=