回文数か否かチェックの方法がもう少しいい方法がありそう。
<?php
$answer = 0;
// 3桁の積ならば、答えは5桁か6桁になる
for($i = 100 ; $i < 1000 ; $i++)
{
for($j = 100 ; $j < 1000 ; $j++)
{
if( check($i * $j) and $answer < $i * $j)
{
$answer = $i * $j;
}
}
}
echo $answer;
function check($num)
{
$flag = false;
if($num < 100000)// 5桁の場合
{
// 1桁目と5桁目、2桁目と4桁目が同じ数字なら回文
if($num % 10 == (int)($num / 10000) and (int)($num % 100 / 10) == (int)($num % 10000 / 1000) )
{
$flag = true;
}
}
else// 6桁の場合
{
// 1桁目と6桁目、2桁目と5桁目、3桁目と4桁目が同じ数字なら回文
if($num % 10 == (int)($num / 100000) and (int)($num % 100 / 10) == (int)($num % 100000 / 10000) and (int)($num % 1000 / 100) == (int)($num % 10000 / 1000))
{
$flag = true;
}
}
return $flag;
}
?>