Skip to content

Instantly share code, notes, and snippets.

@avamsi
Last active November 8, 2015 13:10
Show Gist options
  • Save avamsi/7047f3dce30172d2fe35 to your computer and use it in GitHub Desktop.
Save avamsi/7047f3dce30172d2fe35 to your computer and use it in GitHub Desktop.
Solution for PRIME1, PRINT using numpy. Times out on PRINT.
from itertools import imap
import numpy
def main():
limit = 2147483647**.5
prime = numpy.ones(limit/2, dtype=numpy.bool)
for i in xrange(3, int(limit**.5) + 1, 2):
if prime[i/2]:
prime[i*i/2: : i] = False
primes = 2*prime.nonzero()[0].astype(int) + 1
primes = primes[1:].tolist()
input = imap(int, __import__('sys').stdin.read().split()).next
out = []
mapstr = numpy.vectorize(str)
for _ in xrange(input()):
l, u = input(), input()
flag = False
if l < 3:
l = 3
flag = True
if l%2 == 0:
l += 1
cap = u**.5 + 1
prime = numpy.ones((u - l)/2 + 1, dtype=numpy.bool)
for p in primes:
if p > cap:
break
if p*p >= l:
b = p*p
else:
b = (l + p - 1)/p*p
if b%2 == 0:
b += p
prime[(b - l)/2: : p] = False
if flag:
out.append('2')
out.append('\n'.join(mapstr(2*prime.nonzero()[0] + l)))
print '\n'.join(out)
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment