Project Euler
Tuesday, June 9th, 2009I’ve been doing the Project Euler puzzles in Python. Here’s one:
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.
My solution turned out to be unique. Instead of multiplying three-digit numbers, filtering for palindromes, and then picking the largest, it generates palindromes directly by counting down from 999 and “mirroring” the digits to the right:
999999
998899
997799
…
Since the result will be six digits (nnn * nnn = nnnnnn), the first number in this series that has a three-digit factor must be the answer. Here’s the code, which returns in under a second:
#!/usr/bin/python
from sys import exit
def mirror(n):
s = str(n)
return int(s + s[::-1])
r = range(999, 100, -1)
for i in r:
pal = mirror(i)
for j in r:
if (pal % j == 0) and (pal / j < 1000):
print pal
exit(0)
