Problem: Find the longest palindrome made from the product of two three-digit numbers.
Q: How do we work out if a number is a palindrome?
A: Convert it to a string and compare it with the reverse of the string. PHP has a built-in function, strrev
, which makes this trivial.
Solution: Given the search space involved, we can simply test all the products of two three-digit numbers using a nested loop.
<?php declare(strict_types=1); error_reporting(E_ALL); function is_palindrome(int $number) : bool { // A number is a palindrome if its string representation // is the same when reversed $str = strval($number); return ($str === strrev($str)); } $longest_palindrome = 0; for ($i = 100; $i <= 999; $i++) { for ($j = 100; $j <= 999; $j++) { $product = $i * $j; if (is_palindrome($product) && $product > $longest_palindrome) { $longest_palindrome = $product; } } } print("$longest_palindrome\n");