 
Project Euler 45: Find the next triangle-pentagonal-hexagonal number after 40755
Project Euler 45 Problem Description
Project Euler 45: Triangle, pentagonal, and hexagonal numbers are generated by the following formula:
| 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.
Analysis
Note that Hexagonal numbers are a subset of Triangle numbers so we only determine the first occurrence of Pn = Hm to find our answer.
We can solve this mathematically by asserting that if Pn = Hm then:
As documented in the article by Wolfram on Hexagonal Pentagonal Numbers we can reduce this equation as:
This is a diophantine equation that expands as such:
which we will feed into our favorite Diophantine equation solver and produce the results:
P0 = 0
H0 = 0
Pn+1 = 97·Pn + 112·Hn - 44
Hn+1 = 84·Pn + 97·Hn - 38
Replace P0 and H0 with our starting index and this problem is solved instantly.  Note that the starting values for p and h were defined in the problem.
A relevant sequence is documented as Reference: The On-Line Encyclopedia of Integer Sequences (OEIS) A046180: Hexagonal pentagonal numbers. A Python program is listed in the comments section to generate this sequence.
Project Euler 45 Solution
Runs < 0.001 seconds in Python 2.7. Use this link to get the Project Euler 45 Solution Python 2.7 source.
Use this link to get the Project Euler 45 Solution Python 2.7 source.

Afterthoughts
- See also, Project Euler 44 Solution: 
- The following program will print the first 8 numbers in the sequence:
 
p = 1
h = 1
for n in range(1, 9):
    print n, h*(2*h - 1)
    px = 97*p + 112*h - 44
    h = 84*p + 97*h - 38
    p = px

Discussion
No comments yet.