euler/python/e045.py

32 lines
615 B
Python

def t(n):
return n * (n + 1) // 2
def p(n):
return n * (3 * n - 1) // 2
def h(n):
return n * (2 * n - 1)
def euler_045():
n_max = 100000
s = 0
t_list = [t(n) for n in range(1, n_max + 1)]
p_set = {p(n) for n in range(1, n_max + 1)}
h_set = {h(n) for n in range(1, n_max + 1)}
for n in range(1, n_max + 1):
if t_list[n - 1] in p_set and t_list[n - 1] in h_set:
t_ = t_list[n - 1]
if t_ > 40755:
s = t_
return s
if __name__ == "__main__":
print("e045.py: " + str(euler_045()))
assert(euler_045() == 1533776805)