Здравствуйте! Сейчас учусь. Возникло сомнение в решении задачи.
Дано число. Необходимо получить все собственные делители этого числа, являющиеся простыми числами.
Дана функция.
PHP:
скопировать код в буфер обмена
function getPrimeDivisors($num) {
$result = [];
$divs = getOwnDivisors($num);
foreach ($divs as $div) {
if (isPrime($div)) {
$result[] = $div;
}
}
return $result;
}
Необходимо написать реализацию вспомогательных функций.
В свою очередь я написал такой код:
PHP:
скопировать код в буфер обмена
function getOwnDivisors($num){
for($i = 1; $i <= $num; $i++){
if($num % $i === 0) {
$arr[] = $i;
}
}
return $arr;
}
function isPrime($num) {
for($i = 2; $i < $num; $i++){
if($num % $i === 0) {
return false;
}
}
return true;
}
Есть несколько вопросов. Первый - все ли правильно в этом коде, и если не все то что неправильно?
Второй - почему, кода я передаю в основную функцию дробное число, то она все равно ведет себя как с простыми числами? Например, передал в функцию число 23,25 а функция возвращает массив с делителями 1 и 23.
Третий - например возьмем число 12. Функция выдаст массив с числами 1,2,3. Куда подевались 6 и 12? Если же возьмем число 19 - то массив будет из чисел 1 и 19. Почему так происходит?