Share the joy

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.

**Script**

Execution Time: 1.3709 seconds

$start = 999; $r = array(); for ($x = $start; $x >= 100; $x--) { for ($y=$start; $y >= 100; $y--) { $p = $x*$y; if ($p == strrev($p)) { $r[] = $p; } } } rsort($r, SORT_NUMERIC); echo $r[0].PHP_EOL;

Share the joy

Hi thanks for your solution, however it tends to slow down on very large numbers (4 digits above)

Here’s my not-so-clean solution, but I THINK it works.

$start = microtime(TRUE);

$palindrome = $palindrome_i = $palindome_j = 0;

for ($i = 999; $i > 99; $i--) {

for ($j = 999; $j > 99; $j--) {

$product = $i * $j;

if ($product == strrev($product)) {

$palindrome_j = $j;

$palindrome = $product;

break;

}

}

if ($palindrome) {

$palindrome_i = $i;

break;

}

}

$palindrome2 = 0;

for ($i = $palindrome_i; $i > $palindrome_j; $i--) {

for ($j = $palindrome_i; $j > $palindrome_j; $j--) {

$product = $i * $j;

if ($product == strrev($product)) {

$palindrome2 = $product;

break;

}

}

if ($palindrome2) {

break;

}

}

echo ($palindrome2) ? $palindrome2 : $palindrome;

`$end = microtime(TRUE);`

echo '' . number_format($end - $start, 4) . ' seconds';

Just sharing here, I could be wrong.

I haven’t had a chance to run through the code just yet, but it runs beautifully as well as much more efficiently than mine. Thank you!