added prime generator
This commit is contained in:
1
generator/primes/README.md
Normal file
1
generator/primes/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# primes generator
|
0
generator/primes/primes.py
Normal file
0
generator/primes/primes.py
Normal file
29
generator/primes/solution/primes.py
Normal file
29
generator/primes/solution/primes.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
from typing import Iterator
|
||||||
|
|
||||||
|
|
||||||
|
def is_prime(n: int) -> bool:
|
||||||
|
if n < 2:
|
||||||
|
return False
|
||||||
|
for d in range(2, n // 2 + 1):
|
||||||
|
if n % d == 0:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def primes() -> Iterator[int]:
|
||||||
|
num = 2
|
||||||
|
while True:
|
||||||
|
if is_prime(num):
|
||||||
|
yield num
|
||||||
|
num += 1
|
||||||
|
|
||||||
|
|
||||||
|
def prime_factorize(n: int) -> Iterator[int]:
|
||||||
|
it = primes()
|
||||||
|
num = n
|
||||||
|
while num > 1:
|
||||||
|
if num % (prime := next(it)) != 0:
|
||||||
|
continue
|
||||||
|
num //= prime
|
||||||
|
it = primes()
|
||||||
|
yield prime
|
51
generator/primes/solution/test_primes.py
Normal file
51
generator/primes/solution/test_primes.py
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user