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?


In [1]:
import math

def nth_pentag(n):
    return (n*(3*n - 1))/2

def is_pentagonal(s):
    n = (1  + math.sqrt(1 + 24*s))/6.0
    return abs(n - math.floor(n)) < 10e-10

L = 10**4
for i in range(1,L):
    p_i = nth_pentag(i)
    for j in range(i, L):
        p_j = nth_pentag(j)
        
        D = p_j - p_i
        
        if is_pentagonal(p_i + p_j) and is_pentagonal(D):
            print D


5482660