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