diff --git a/0003.py b/0003.py index f75f513..2cc6405 100644 --- a/0003.py +++ b/0003.py @@ -1,57 +1,12 @@ 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 +import util target = 600851475143 -# print(findLargestPrimeFactor(target)) -factors = findPrimeFactors(target) -print(factors) +factors = util.find_prime_factors(target) + result = reduce((lambda x, y: x * y), factors) + print(result) -print(findPrimeFactors(48)) +print(result == target) diff --git a/0005.py b/0005.py index 2b64969..4bc0877 100644 --- a/0005.py +++ b/0005.py @@ -1,27 +1,14 @@ from collections import Counter from functools import reduce +import util -def find_prime_factors(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 = 232792560 def divisible(rng): factors = None for num in rng: - nums = find_prime_factors(num) + nums = util.find_prime_factors(num) count = Counter(nums) if (factors == None): @@ -32,18 +19,15 @@ def divisible(rng): factors[key] = value return factors - # max_num = max(rng) factors = divisible(range(1, 21)) -# print(factors) - -# reduce(def fnc(value, key): print(value), factors.items()) - result = 1 + for key, value in factors.items(): result *= key ** value print(result) +print(result == target) diff --git a/util.py b/util.py new file mode 100644 index 0000000..68acf27 --- /dev/null +++ b/util.py @@ -0,0 +1,36 @@ +def find_largest_prime_factor(n): + prime_factor = 1 + factors.append(prime_factor) + + print('appended') + i = 2 + + while i <= n / i: + if n % i == 0: + factors.append(i) + prime_factor = i + n = int(n / i) + else: + i += 1 + + if prime_factor < n: + prime_factor = n + + return prime_factor + + +def find_prime_factors(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