diff --git a/python/e203.py b/python/e203.py index e28513e..6558fba 100644 --- a/python/e203.py +++ b/python/e203.py @@ -52,4 +52,3 @@ if __name__ == "__main__": solution = euler_203() print("e203.py: " + str(solution)) assert solution == 34029210557338 - diff --git a/python/e204.py b/python/e204.py index d4794e3..88421b9 100644 --- a/python/e204.py +++ b/python/e204.py @@ -35,4 +35,4 @@ def euler_204(): if __name__ == "__main__": solution = euler_204() print("e204.py: " + str(solution)) - assert(solution == 2944730) + assert solution == 2944730 diff --git a/python/e205.py b/python/e205.py index aba9e76..24f0e18 100644 --- a/python/e205.py +++ b/python/e205.py @@ -17,12 +17,12 @@ def euler_205(): all_combinations = len(scores_four) * len(scores_six) four_won_count = 0 - for four_value, four_count in get_item_counts(scores_four).items(): + for four_value, four_count in get_item_counts(scores_four).items(): current_six_count = 0 for six_value, six_count in get_item_counts(scores_six).items(): if four_value > six_value: current_six_count += six_count - four_won_count += (four_count * current_six_count) + four_won_count += four_count * current_six_count p = four_won_count / all_combinations return f"{round(p, 7)}" @@ -32,4 +32,3 @@ if __name__ == "__main__": solution = euler_205() print("e205.py: " + str(solution)) # assert(solution == 0) - diff --git a/python/e206.py b/python/e206.py index 91d59db..c4d506f 100644 --- a/python/e206.py +++ b/python/e206.py @@ -2,13 +2,14 @@ import math def is_square(apositiveint): - """ From: https://stackoverflow.com/a/2489519 """ + """From: https://stackoverflow.com/a/2489519""" x = apositiveint // 2 seen = set([x]) while x * x != apositiveint: - x = (x + (apositiveint // x)) // 2 - if x in seen: return False - seen.add(x) + x = (x + (apositiveint // x)) // 2 + if x in seen: + return False + seen.add(x) return True @@ -16,7 +17,7 @@ def canditates(current_value, depth): if depth <= 0: yield current_value else: - d = 10 ** depth + d = 10**depth for i in range(10): for new_value in canditates(current_value - i * d, depth - 2): yield new_value @@ -32,5 +33,4 @@ def euler_206(): if __name__ == "__main__": solution = euler_206() print("e206.py: " + str(solution)) - assert(solution == 1389019170) - + assert solution == 1389019170 diff --git a/python/e243.py b/python/e243.py index ce9dc27..bbb62a3 100644 --- a/python/e243.py +++ b/python/e243.py @@ -37,4 +37,4 @@ def euler_243(): if __name__ == "__main__": solution = euler_243() print("e243.py: " + str(solution)) - assert(solution == 892371480) + assert solution == 892371480 diff --git a/python/e347.py b/python/e347.py new file mode 100644 index 0000000..8b721ee --- /dev/null +++ b/python/e347.py @@ -0,0 +1,39 @@ +from lib_prime import primes +from typing import Optional, Tuple + + +def s(n): + ps = primes(n) + + sum = 0 + for p1_index in range(len(ps)): + p1 = ps[p1_index] + for p2_index in range(p1_index + 1, len(ps)): + p2 = ps[p2_index] + if p1 * p2 > n: + break + largest: Optional[Tuple[int, int, int]] = None + p1e = 1 + while p1**p1e * p2 <= n: + p2e = 1 + m = p1**p1e * p2**p2e + while m <= n: + if largest is None or m > largest[2]: + largest = (p1, p2, m) + p2e += 1 + m = p1**p1e * p2**p2e + p1e += 1 + assert largest is not None + sum += largest[2] + return sum + + +def euler_347(): + assert s(100) == 2262 + return s(10_000_000) + + +if __name__ == "__main__": + solution = euler_347() + print("e347.py: " + str(solution)) + assert solution == 11109800204052