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 [ ]:
let max = 90000UL
let triangle n = (n * (n+1UL)) / 2UL
let pentagonal n = (n * ((3UL*n)-1UL)) / 2UL
let hexagonal n = (n * ((2UL*n)-1UL))
let triangles = [ 0UL..max ] |> List.map triangle
let pentagons = [ 0UL..max ] |> List.map pentagonal |> Set.ofList
let hexagons = [ 0UL..max ] |> List.map hexagonal |> Set.ofList
triangles
|> List.filter (fun n -> pentagons.Contains(n))
|> List.filter (fun n -> hexagons.Contains(n))
|> List.map string
In [ ]: