# Problem 44: Pentagon numbers
# 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?
import math
def Pen(n):
  return n*((3*n)-1)//2
def isPen(P):
  n = (1+int((1+24*P)**0.5))//6
  return Pen(n)==P
minD = math.inf
k = 2
oldPk = 5
while True:
  k += 1
  Pk = Pen(k)
  if Pk-oldPk>minD:
    break
  oldPk = Pk
  for j in range(k-1,0,-1):
    Pj = Pen(j)
    D = Pk-Pj
    if D>minD:
      break
    if isPen(Pk-Pj) and isPen(Pk+Pj) and Pk-Pj<minD:
      minD = Pk-Pj
print(minD)


