36 lines
745 B
Python
36 lines
745 B
Python
def is_prime(n: int) -> bool:
|
|
if n < 2:
|
|
return False
|
|
|
|
for i in range(2, n // 2 + 1):
|
|
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_factors: list[int] = []
|
|
num = n
|
|
prime = 2
|
|
while num > 1:
|
|
if num % prime == 0:
|
|
prime_factors.append(prime)
|
|
num //= prime
|
|
prime = 2
|
|
else:
|
|
prime = next_prime(prime)
|
|
return prime_factors
|
|
|
|
if __name__ == "__main__":
|
|
prime_factorize(10) |