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)