From 2a762f8a9ac00ee1c9eb6f90e3b89958e846ad19 Mon Sep 17 00:00:00 2001 From: Linus Miller Date: Mon, 26 Mar 2018 16:10:03 +0200 Subject: [PATCH] Problems 1 - 6 --- 0001.py | 7 +++++++ 0002.py | 14 ++++++++++++++ 0003.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 0004.py | 31 +++++++++++++++++++++++++++++++ 0005.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 0006.py | 19 +++++++++++++++++++ 6 files changed, 177 insertions(+) create mode 100644 0001.py create mode 100644 0002.py create mode 100644 0003.py create mode 100644 0004.py create mode 100644 0005.py create mode 100644 0006.py diff --git a/0001.py b/0001.py new file mode 100644 index 0000000..e3a0143 --- /dev/null +++ b/0001.py @@ -0,0 +1,7 @@ +result = 0 + +for num in range(1000): + if (num % 5 == 0 or num % 3 == 0): + result = result + num + +print(result) diff --git a/0002.py b/0002.py new file mode 100644 index 0000000..2d35a35 --- /dev/null +++ b/0002.py @@ -0,0 +1,14 @@ + +previous = 1 +current = 1 +result = 0 + +while (current <= 4000000): + if (current % 2 == 0): + result = result + current + + next = current + previous + previous = current + current = next + +print(result) diff --git a/0003.py b/0003.py new file mode 100644 index 0000000..f75f513 --- /dev/null +++ b/0003.py @@ -0,0 +1,57 @@ +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)) diff --git a/0004.py b/0004.py new file mode 100644 index 0000000..3058b63 --- /dev/null +++ b/0004.py @@ -0,0 +1,31 @@ +def is_palindrome(n): + st = str(n) + + for i in range(0, int(len(st) / 2)): + if (st[i] != st[len(st) - 1 - i]): + return False + + return True + + +def palindrome(): + largest = 0 + i = 999 + + while(i > 0): + j = 999 + + while(j > 0): + result = i * j + + if (largest >= result): + break; + elif (is_palindrome(result)): + largest = result + + j -= 1 + i -= 1 + + return largest +# print(is_palindrome(9119)) +print(palindrome()) diff --git a/0005.py b/0005.py new file mode 100644 index 0000000..a1713c6 --- /dev/null +++ b/0005.py @@ -0,0 +1,49 @@ +from collections import Counter +from functools import reduce + +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 + +def divisible(rng): + factors = None + + for num in rng: + nums = findPrimeFactors(num) + count = Counter(nums) + + if (factors == None): + factors = count + else: + for key, value in count.items(): + if (not factors[key] or value > factors[key]): + 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) + diff --git a/0006.py b/0006.py new file mode 100644 index 0000000..45e5b2c --- /dev/null +++ b/0006.py @@ -0,0 +1,19 @@ +from functools import reduce + +def square_sum(rng): + sum = reduce(lambda x, y: x + y, rng) + + return sum ** 2 + +def sum_squares(rng): + squares = list(map(lambda x: x**2, rng)) + + return reduce(lambda x, y: x + y, squares) + +lst = list(range(1, 101)) +result1 = sum_squares(lst) +result2 = square_sum(lst) + +print(result2 - result1) + +# print(result)