Ответов: 4 Просмотров: 815
|
Здравствуйте! Сейчас учусь. Возникло сомнение в решении задачи.
Дано число. Необходимо получить все собственные делители этого числа, являющиеся простыми числами.
Дана функция.
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. Почему так происходит? |