# Project Euler problem 4 T-SQL

Jun 07

Project Euler problem 4 was easier then 3. 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.

Scheherazade storyteller in 1001 nights

 1 2 3 4 5 6 7 8 9 10 11 12 13 USE tempdb WITH Scheherazade (i) AS ( SELECT TOP 600 ROW_NUMBER()OVER(ORDER BY object_id)+399 FROM sys.all_objects ) SELECT TOP 11 a.i,b.i , a.i*b.i AS j FROM Scheherazade a CROSS JOIN Scheherazade b WHERE FLOOR((a.i*b.i)%1000000/100000)=FLOOR((a.i*b.i)%10/1) AND FLOOR((a.i*b.i)%100000/10000)=FLOOR((a.i*b.i)%100/10) AND FLOOR((a.i*b.i)%10000/1000)=FLOOR((a.i*b.i)%1000/100) ORDER BY a.i*b.i desc;

Tomas solution uses the REVERSE function. I have never thought of using REVERSE on numbers.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 -- Problem 4 -- Find the largest palindrome made from the product of two 3-digit numbers. USE tempdb; GO   WITH Numbers_CTE AS ( SELECT ROW_NUMBER() OVER (ORDER BY object_id) AS number FROM sys.all_columns ) ,Products_CTE AS ( SELECT DISTINCT n1.number * n2.number AS product ,REVERSE(n1.number * n2.number) AS reverseproduct FROM Numbers_CTE AS n1 CROSS JOIN Numbers_CTE AS n2 WHERE n1.number BETWEEN 100 AND 999 AND n2.number BETWEEN 100 AND 999 ) SELECT TOP 1 product AS [largest palindrome] FROM Products_CTE WHERE product = reverseproduct ORDER BY product DESC;