https://projecteuler.net/problem=45
Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:
Triangle $T_n=n(n+1)/2 = 1, 3, 6, 10, 15, ...$
Pentagonal $P_n=n(3n−1)/2 = 1, 5, 12, 22, 35, ...$
Hexagonal $H_n=n(2n−1) = 1, 6, 15, 28, 45, ...$
It can be verified that T285 = P165 = H143 = 40755.
Find the next triangle number that is also pentagonal and hexagonal.
def T(n):
return n * (n + 1) // 2
assert(T(3) == 6)
def P(n):
return n * (3 * n - 1) // 2
assert(P(3) == 12)
def H(n):
return n * (2 * n - 1)
assert(H(3) == 15)
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
print(s)
assert(s == 1533776805)