33 lines
639 B
Python
33 lines
639 B
Python
def is_prime(n: int) -> bool:
|
|
if n < 2:
|
|
return False
|
|
|
|
for i in range(2, n):
|
|
if n % i == 0:
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
def next_prime(n: int) -> int:
|
|
return n + 1 if is_prime(n + 1) else next_prime(n + 1)
|
|
|
|
|
|
def next_prime_iterative(n: int) -> int:
|
|
num = n + 1
|
|
while not is_prime(num):
|
|
num += 1
|
|
return num
|
|
|
|
|
|
def prime_factorize(n: int) -> list[int]:
|
|
prime_factores: list[int] = []
|
|
num = n
|
|
prime = 0
|
|
while (prime := next_prime(prime)) <= n:
|
|
if num % prime == 0:
|
|
prime_factores += [prime]
|
|
num //= prime
|
|
|
|
return prime_factores
|