Skip to content

Commit 66db8d7

Browse files
committed
improved prime numbers implementation
1 parent 74aeaa3 commit 66db8d7

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

maths/prime_numbers.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from typing import List
1+
from typing import List, Generator
22

33

4-
def primes(max: int) -> List[int]:
4+
def primes(max: int) -> Generator[int]:
55
"""
66
Return a list of all primes numbers up to max.
77
>>> primes(10)
@@ -13,16 +13,16 @@ def primes(max: int) -> List[int]:
1313
>>> primes(1_000_000)[-1]
1414
999983
1515
"""
16-
max += 1
17-
numbers = [False] * max
18-
ret = []
19-
for i in range(2, max):
20-
if not numbers[i]:
21-
for j in range(i, max, i):
22-
numbers[j] = True
23-
ret.append(i)
24-
return ret
16+
numbers: Generator = (i for i in range(1, (max + 1)))
17+
for i in filter(lambda x: x > 1, numbers):
18+
for j in range(2, i):
19+
if (i % j) == 0:
20+
break
21+
else:
22+
yield i
2523

2624

2725
if __name__ == "__main__":
28-
print(primes(int(input("Calculate primes up to:\n>> "))))
26+
number = int(input("Calculate primes up to:\n>> "))
27+
for ret in primes(number):
28+
print(ret)

0 commit comments

Comments
 (0)