<?php
// 素因数分解して4つの要素がある数の最小数は 2*3*5*7 = 210 になる。
// 4つの連続した数を探すので、4つおきに探して、要素が4つになったときに前後を調べると、調べる対象が約1/4 になる。
// 奇数のほうが4つの要素がある数として、大きな数になるはずなので、4つおきの数は奇数を調べたほうが調べる対象が減るはず
// 3*5*7*11 が奇数で4つの数がある最小数
$answer = 1155;
$answer2 = 0;
$num = 0;
while(true)
{
if(count_primes_factor($answer) == 4)
{
$answer2 = $answer;
$num++;
// 前後3つの数を調べる
for($tmp = $answer - 1 ; $tmp >= $answer - 3 ; $tmp--)
{
if(count_primes_factor($tmp) == 4)
{
$answer2 = $tmp;
$num++;
}
else
{
break;
}
}
for($tmp = $answer + 1; $tmp <= $answer + 3 ; $tmp++)
{
if(count_primes_factor($tmp) == 4)
{
$num++;
}
else
{
break;
}
}
}
if($num == 4)
{
break;
}
else
{
$num = 0;
}
$answer+=4;
}
echo $answer2."\n";
// 素因数の要素数をカウントする関数
function count_primes_factor($num)
{
$count = 0;
$i = 3;
while($num >= $i)
{
$flag = true;
while($num % $i == 0)
{
// 初回だけカウントする
if($flag)
{
$flag = false;
$count++;
}
$num = $num / $i;
}
$i +=2;
}
if($num % 2 == 0)
{
$count++;
}
return $count;
}
?>