class PrimeNumbersIterator(Iterator): def __init__(self,start,end): self.start = start-1 self.end = end def IsPrimeNumbers(self,k): if k <= 2: return False x = int(math.sqrt(k))+1 for i in xrange(2,x): if k%i == 0: return False return True def next(self): if self.start >= self.end: raise StopIteration else: self.start+=1 if self.IsPrimeNumbers(self.start) == True: return self.start class PrimeNumbersIterable(Iterable): def __init__(self,start,end): self.start = start self.end = end def __iter__(self): return PrimeNumbersIterator(self.start,self.end) t = PrimeNumbersIterable(1,20) for i in t: print i,