## 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)) ])
``` |