from functools import reduce target = 600851475143 # list = [] # for num in range(1, int(target / 2)): # print(num) # if (target % num == 0): # list.append(num) # 2^x - 1 6k - 1 # print(list) factors = [] def findLargestPrimeFactor(n): primeFactor = 1 factors.append(primeFactor) print('appended') i = 2 while i <= n / i: if n % i == 0: factors.append(i) primeFactor = i n = int(n / i) else: i += 1 if primeFactor < n: primeFactor = n return primeFactor def findPrimeFactors(n): factors = [] i = 2 while i <= n / i: if n % i == 0: factors.append(i) n = int(n / i) else: i += 1 factors.append(n) return factors target = 600851475143 # print(findLargestPrimeFactor(target)) factors = findPrimeFactors(target) print(factors) result = reduce((lambda x, y: x * y), factors) print(result) print(findPrimeFactors(48))