#!/usr/bin/env python3
from datetime import date, timedelta
from math import sqrt
def daterange(begin, end):
cursor = begin
oneday = timedelta(days=1)
while True:
yield cursor
if cursor == end:
return
cursor += oneday
def primedates(begin, end):
remove_composite = lambda l, k:[n for n in l if n % k != 0]
days = (d.year * 10000 + d.month * 100 + d.day
for d in daterange(begin, end))
l = remove_composite(days, 2)
limit = int( sqrt( max(l) ))
searchlist = remove_composite(range(3, limit + 1), 2)
while searchlist:
n = searchlist[0]
searchlist = remove_composite(searchlist, n)
l = remove_composite(l, n)
print(list(l))
import cProfile
#cProfile.run("primedate(date(1,1,1), date(9999, 12, 31))")
cProfile.run("primedates(date(1970,1,1), date(2038, 1, 19))")