Problem:
Pentagonal numbers are generated by the formula, Pn=n(3 * n – 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 is pentagonal and D = |Pk Pj| is minimised; what is the value of D?
One Possible Soultion:
# Python version = 2.7.1
# Platform = win32
from __future__ import division
import math
def main():
"""Main Program"""
p = set(n * ((3 * n) - 1) / 2 for n in range(2, 4000))
for i in p:
for j in p:
if i + j in p and j - i in p:
x = i - j
else:
continue
print "Answer = ", math.fabs(x)
"""Answer is the first vaule of x, as the
pentagonal numbers get larger, they get farther
apart, makes some sense..."""
if __name__ == '__main__':
main()
