Greg Christian's weblog

May 5, 2011

Project Euler – Problem # 44 – Solved with Python

Filed under: Project Euler: 40, 41, 42, 43, 44, 45,Python — Greg Christian @ 2:15 pm
Tags: , ,

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()

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Theme: Rubric. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.