26 lines
601 B
Python

from tools import number_theory
def find_a_factor(num, prime):
while prime:
p = prime.pop(0)
if not (num % p):
return p, prime
return 0, []
def factor_num(num):
prime = list(number_theory.make_prime(int(num ** 0.5)))
factors = []
while True:
factor, prime = find_a_factor(num, prime)
if factor:
factors.append(factor)
while not (num % factor):
num //= factor
else:
if 1 != num:
factors.append(num)
return factors
print(factor_num(600851475143))