Задача: найдите все пары дружественных чисел в промежутке от 1 до 10000. Проблема: если прописывать пары вручную, то работает хорошо, но если сделать циклом, то браузер очень долго думает и выводит 30 секунд, не знаю как запустить все числа. PHP: function getDivisors($count) { $dividers = []; for($i = 1; $i <= $count; $i++) { if($i == $count) return $dividers; if($count % $i == 0) { $dividers[] = $i; } } } function friendlyNnum($num1, $num2) { $arr1 = getDivisors($num1); $arr2 = getDivisors($num2); $res1 = 0; $res2 = 0; foreach($arr1 as $k) { $res1 = $res1 + $k; } foreach($arr2 as $j) { $res2 = $res2 + $j; } return [$res1, $res2]; } $count = 284; $count2 = 220; if(friendlyNnum($count, $count2)[0] == $count2 && friendlyNnum($count, $count2)[1] == $count) { echo $count . ' AND ' . $count2 . '<br><br>'; } вот так напишет Maximum execution time of 30 seconds exceeded PHP: for($i = 1; $i <= 10000; $i++) { for($j = 1; $j <= 10000; $j++) { if(friendlyNnum($i, $j)[0] == $j && friendlyNnum($i, $j)[1] == $i) { echo $i . ' AND ' . $j . '<br><br>'; } } } --- Добавлено --- А можно ли как-нибудь сделать разрывной цикл, что бы такого не было? Например сделать 300 итераций, завершить цикл и перейти совсем к другому циклу, а там начать с 301? --- Добавлено --- Да можно, я проверил, но это наверно очень грубый костыль?
В этой функции нет return. 10000x10000 - сто миллионов итераций. Сделай прост Код (Text): <?php set_time_limit(600); так до 10 минут сможет скрипт работать.