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(s):
    n = (1  + math.sqrt(1 + 24*s))/6.0
    return abs(n - math.floor(n)) < 10e-10

def is_hexagonal(s):
    n = (1  + math.sqrt(1 + 8*s))/4.0
    return abs(n - math.floor(n)) < 10e-10

for n in range(285,10**5):
    p = (n*(n+1))/2
    
    if is_pentagonal(p) and is_hexagonal(p):
        print p


40755
1533776805