答えは感覚的に素数に絞れるような気がするけど、なんとなくな理由なので全数チェック。
<?php
// あまりの数が同じになったとき、循環したとみなせる。
// 余りが0になったとき、循環はしない
$answer = 0;
$max_cycle = 0;
for($i = 2 ; $i < 1000 ; $i++)
{
$bunshi = 10;
$array = array();
while(true)
{
while($bunshi < $i)
{
$bunshi *= 10;
}
$bunshi = $bunshi % $i;
$start_cycle = array_search($bunshi,$array,true);
if($bunshi == 0 or $start_cycle !== false)
{
$tmp = count($array) - $start_cycle;
break;
}
else
{
$array[] = $bunshi;
}
}
if($max_cycle < $tmp)
{
$max_cycle = $tmp;
$answer = $i;
}
}
echo $answer;
?>