@@ -820,14 +820,14 @@ which incur interpreter overhead.
820
820
pass
821
821
822
822
def sieve(n):
823
- "Primes less than n"
824
- # sieve(30) --> 2 3 5 7 11 13 17 19 23 29
825
- data = bytearray([1]) * n
826
- data[:2] = 0, 0
827
- limit = math.isqrt(n) + 1
828
- for p in compress(range(limit), data):
829
- data[p* p : n : p] = bytearray(len(range(p* p, n, p)))
830
- return iter_index(data, 1 )
823
+ "Primes less than n"
824
+ # sieve(30) --> 2 3 5 7 11 13 17 19 23 29
825
+ data = bytearray([1]) * n
826
+ data[:2] = 0, 0
827
+ limit = math.isqrt(n) + 1
828
+ for p in compress(range(limit), data):
829
+ data[p+ p : n : p] = bytearray(len(range(p+ p, n, p)))
830
+ return compress(count(), data )
831
831
832
832
def flatten(list_of_lists):
833
833
"Flatten one level of nesting"
@@ -1191,8 +1191,8 @@ which incur interpreter overhead.
1191
1191
1192
1192
>>> list (sieve(30 ))
1193
1193
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
1194
- >>> small_primes = [2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 , 31 , 37 , 41 , 43 , 47 , 53 , 59 , 61 , 67 , 71 , 73 , 79 , 83 , 89 , 97 ]
1195
- >>> all (list (sieve(n)) == [p for p in small_primes if p < n] for n in range (101 ))
1194
+ >>> small_primes = [2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 , 31 , 37 , 41 , 43 , 47 , 53 , 59 ]
1195
+ >>> all (list (sieve(n)) == [p for p in small_primes if p < n] for n in range (60 ))
1196
1196
True
1197
1197
>>> len (list (sieve(100 )))
1198
1198
25
0 commit comments