Pentagon numbers
Problem 44
Pentagonal numbers are generated by the formula, Pn=n(3n−1)/2. The first ten pentagonal numbers are:
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
It can be seen that P4 + P7 = 22 + 70 = 92 = P8. However, their difference, 70 − 22 = 48, is not pentagonal.
Find the pair of pentagonal numbers, Pj and Pk, for which their sum and difference are pentagonal and D = |Pk − Pj| is minimised; what is the value of D?
from tools import pentagonal, is_pentagonal
def run():
pentagonals = []
pentagonals_set = set()
for p in pentagonal():
for p2 in pentagonals:
if (p - p2) in pentagonals_set and is_pentagonal(p + p2):
return p - p2
pentagonals.insert(0, p)
pentagonals_set.add(p)