Revision 2 as of 2008-02-24 00:28:06

Clear message

Python Solutions to [http://projecteuler.net/index.php?section=problems Project Euler].

Index TableOfContents(2)

Problem 1: Add all the natural numbers below 1000 that are multiples of 3 or 5.

http://projecteuler.net/index.php?section=problems&id=1

    def multiples_of_3_or_5():
        for number in xrange(1000):
            if not number % 3 or not number % 5:
                yield number

    print sum(multiples_of_3_or_5())

Problem 2: Find the sum of all the even-valued terms in the Fibonacci sequence which do not exceed one million.

http://projecteuler.net/index.php?section=problems&id=2

    def fib():
        x,y = 1,1
        while True:
            yield x
            x,y = y, x+y

    def even(seq):
        for number in seq:
            if not number % 2:
                yield number

    def under_a_million(seq):
        for number in seq:
            if number > 1000000:
                break
            yield number   

    print sum(even(under_a_million(fib())))

Problem 3: Find the largest prime factor of 317584931803.

http://projecteuler.net/index.php?section=problems&id=3

    plist = [2]

    def primes(min, max):
        global plist
        if 2 >= min: yield 2
        i = 3
        while i <= max:
            for p in plist:
                if i%p == 0 or p*p > i: break
            if i%p:
                plist.append(i)
                if i >= min: yield i
            i = i+2
        
    def factors(number):
        for prime in primes(2, number):
            if number % prime == 0:
                number = number / prime
                yield prime
            if number == 1:
                raise StopIteration

    print max(factors(317584931803))

Unable to edit the page? See the FrontPage for instructions.