Я написал программу на PHP для нахождения наибольшего простого множителя. Я думаю, что он достаточно оптимизирован, потому что загружается довольно быстро. Но есть проблема: он не считает простые множители очень больших чисел. Вот программа:
function is_even($s) {
$sk_sum = 0;
for($i = 1; $i <= $s; $i++) {
if($s % $i == 0) { $sk_sum++; }
}
if($sk_sum == 2) {
return true;
}
}
$x = 600851475143; $i = 2; //x is number
while($i <= $x) {
if($x % $i == 0) {
if(is_even($i)) {
$sk = $i; $x = $x / $i;
}
}
$i++;
}
echo $sk;
is_even
вis_prime
и пусть он возвращает false в последней строке функции. Кроме того, вам не нужно включать $i = 1 или $i = $s в этот цикл, вы можете просто вернуть false, если оно делится на любое другое число. - person catchmeifyoutry   schedule 19.05.2010