1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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, |