Избавиться от последнего оператора if, в противном случае, если $i!=sqrt($n)
, потому что sqrt ($ n) не является целым числом, у вас есть неопределенное возвращаемое значение
function find_highest_prime_factor($n){
for ($i = 2; $i <= sqrt($n); $i++) //sqrt(n) is the upperbound
{
if (bcmod($n, $i) == 0) //its a factor
{
return max($i, find_highest_prime_factor(bcdiv($n,$i)));
}
}
return $n; //it's prime if it made it through that loop
}