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