Solve 73 in Python.
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
from collections import namedtuple
|
|
||||||
from lib_prime import primes
|
from lib_prime import primes
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
|
|
||||||
@@ -14,28 +13,6 @@ def relative_primes_count_factors(n, factors):
|
|||||||
return n // d
|
return n // d
|
||||||
|
|
||||||
|
|
||||||
Fraction = namedtuple("Fraction", ["n", "d"])
|
|
||||||
|
|
||||||
|
|
||||||
# Procedures that were not actually helpful
|
|
||||||
def get_farey_series_length(f_min, f_max, d_max):
|
|
||||||
if f_min.d + f_max.d > d_max:
|
|
||||||
return 0
|
|
||||||
f_med = Fraction(f_min.n + f_max.n, f_min.d + f_max.d)
|
|
||||||
l_min = get_farey_series_length(f_min, f_med, d_max)
|
|
||||||
l_max = get_farey_series_length(f_med, f_max, d_max)
|
|
||||||
return l_min + 1 + l_max
|
|
||||||
|
|
||||||
|
|
||||||
def get_farey_series(f_min, f_max, d_max):
|
|
||||||
if f_min.d + f_max.d > d_max:
|
|
||||||
return []
|
|
||||||
f_med = Fraction(f_min.n + f_max.n, f_min.d + f_max.d)
|
|
||||||
l_min = get_farey_series(f_min, f_med, d_max)
|
|
||||||
l_max = get_farey_series(f_med, f_max, d_max)
|
|
||||||
return l_min + [f_med] + l_max
|
|
||||||
|
|
||||||
|
|
||||||
def prime_factors_unique(n, primes_list, primes_set):
|
def prime_factors_unique(n, primes_list, primes_set):
|
||||||
if n in primes_set:
|
if n in primes_set:
|
||||||
return [n]
|
return [n]
|
||||||
|
|||||||
@@ -1,8 +1,35 @@
|
|||||||
|
|
||||||
|
def get_farey_series_length_recursive(d_1, d_2, d_max):
|
||||||
|
if d_1 + d_2 > d_max:
|
||||||
|
return 0
|
||||||
|
d_med = d_1 + d_2
|
||||||
|
l_min = get_farey_series_length_recursive(d_1, d_med, d_max)
|
||||||
|
l_max = get_farey_series_length_recursive(d_med, d_2, d_max)
|
||||||
|
return l_min + 1 + l_max
|
||||||
|
|
||||||
|
|
||||||
|
def get_farey_series_length(d_1, d_2, d_max):
|
||||||
|
new_pairs = [(d_1, d_2)]
|
||||||
|
s = 0
|
||||||
|
|
||||||
|
while new_pairs:
|
||||||
|
pairs = new_pairs
|
||||||
|
new_pairs = []
|
||||||
|
for d_1, d_2 in pairs:
|
||||||
|
d_new = d_1 + d_2
|
||||||
|
if d_new <= d_max:
|
||||||
|
s += 1
|
||||||
|
new_pairs.append((d_1, d_new))
|
||||||
|
new_pairs.append((d_new, d_2))
|
||||||
|
return s
|
||||||
|
|
||||||
|
|
||||||
def euler_073():
|
def euler_073():
|
||||||
return 0
|
d_max = 12000
|
||||||
|
s = get_farey_series_length(2, 3, d_max)
|
||||||
|
return s
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print("e073.py: " + str(euler_073()))
|
print("e073.py: " + str(euler_073()))
|
||||||
assert(euler_073() == 0)
|
assert(euler_073() == 7295372)
|
||||||
|
|||||||
Reference in New Issue
Block a user