Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:
Triangle Tn=n(n+1)/2 1, 3, 6, 10, 15, ...
Pentagonal Pn=n(3n−1)/2 1, 5, 12, 22, 35, ...
Hexagonal Hn=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.
In [1]:
import math
def is_pentagonal(x):
# See test for pentagonal numbers
# https://en.wikipedia.org/wiki/Pentagonal_number
n = math.sqrt(24 * x + 1) + 1
return n/6 == n//6
def is_hexagonal(x):
# See test for pentagonal numbers
# https://en.wikipedia.org/wiki/Hexagonal_number
n = math.sqrt(8 * x + 1) + 1
return n/4 == n//4
def search(start_at=285):
n = start_at
while True:
T_n = n * (n+1) // 2
if is_pentagonal(T_n) and is_hexagonal(T_n):
return (T_n, n)
n += 1
In [2]:
search(start_at=286)
Out[2]:
In [ ]: