Omerfd haklı. Kendisi en büyük böleni olur.
Ayrıca sizin kodunuz Asal sayılar için sonuç veremez. (Kendisi ve 1'e bölünmesi koşulunu kontrol edemezsiniz) Kendisi hariç en büyük bölenini bulacaksanız şunu deneyebilirsiniz:
<?php
$sayi=131;
for($i = intval(floor($sayi/2)); $i>=1; $i--)
{
if ($sayi % $i == 0)
{
if($i==1){
echo $sayi .' bir asal sayıdır.<br />';
}else{
echo 'En büyük tam bölen: '.$i.'<br />';
break;
}
}else{
//İsteğe bağlı debug
//echo '$sayi: '.$sayi .' - $i: '. $i. ' - $sayi % $i ='.$sayi % $i. '<br />';
}
}Sizin kodunuzda denediğimde de max() çalışıyor.
<?php
$sayi=120;
for($i=2;$i<=$sayi/2;$i++)
if ($sayi%$i==0)
$bolenler[]=$i;
echo 'En büyük bölen: '. max($bolenler);