## a couple more

''I'm no so proud about this. The eratosthenes function is almost a copy&paste''

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from math import sqrt def eratosthenes (limit): D = {} # map composite integers to primes witnessing their compositeness q = 2 # first integer to test for primality while q <= limit: if q not in D: yield q # not marked composite, must be prime D[q * q] = [q] # first multiple of q not already marked else: for p in D[q]: # move each witness to its next multiple D.setdefault (p + q, []).append (p) del D[q] # no longer need D[q], free memory q += 1 num = 600851475143 print max (filter (lambda x: num % x == 0, eratosthenes (int (sqrt (num)) + 1))) |

''At least I learned a bit more about the prime test and the Eratosthenes sieve''

''I suspect this one can be more efficient''

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 99.

Find the largest palindrome made from the product of two 3-digit numbers.

1 2 | f = lambda x: x == x[::-1] print max ([ (a * b) for a in xrange (100, 1000) for b in xrange (a, 1000) if f (str (a * b)) ]) |