Сложность: hard
Например, 128 является саморазделяющимся числом, потому что 128 % 1 == 0, 128 % 2 == 0 и 128 % 8 == 0. Саморазделяющееся число не может содержать цифру ноль. Если даны два целых числа left и right, верните список всех саморазделяющихся чисел в диапазоне [left, right].
Пример:
Input: left = 1, right = 22
Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]
👨💻 Алгоритм:
1⃣Переберите все числа в диапазоне от left до right.
2⃣Для каждого числа проверьте, является ли оно саморазделяющимся: Разделите число на его цифры. Убедитесь, что ни одна цифра не равна нулю и число делится на каждую из своих цифр без остатка.
3⃣Добавьте саморазделяющиеся числа в результативный список и верните его.
😎 Решение:
function selfDividingNumbers($left, $right) {
$result = [];
for ($num = $left; $num <= $right; $num++) {
if (isSelfDividing($num)) {
$result[] = $num;
}
}
return $result;
}
function isSelfDividing($num) {
$n = $num;
while ($n > 0) {
$digit = $n % 10;
if ($digit == 0 || $num % $digit != 0) {
return false;
}
$n = (int)($n / 10);
}
return true;
}Ставь 👍 и забирай 📚 Базу знаний