awilum.ru
Статьи Курсы Об авторе

Как определить, является ли число харшадом или нет в PHP?

Харшадское число, также известное как число Нивена, является числом, которое делится на сумму своих цифр. Другими словами, если число делится на сумму его цифр без остатка, то оно считается харшадским числом. В этой статье мы рассмотрим, как можно определить, является ли число харшадом или нет с помощью PHP.

Числа харшад, или числа Нивена, — натуральные числа, делящиеся нацело на сумму своих цифр. Таким числом является, например, 1729, так как 1729 = (1 + 7 + 2 + 9) × 91.


Первые 50 чисел харшад, не меньших 10
10 12 18 20 21 24 27 30 36 40
42 45 48 50 54 60 63 70 72 80
81 84 90 100 102 108 110 111 112 114
117 120 126 132 133 135 140 144 150 152
153 156 162 171 180 190 192 195 198 200

В PHP можно легко определить, является ли число харшадом, используя простой алгоритм проверки на делимость. Давайте разберем его шаг за шагом с примерами кода.

Шаг 1: Получение суммы цифр числа

Прежде чем проверять делится ли число на сумму своих цифр, нам нужно вычислить эту сумму. Для этого мы можем использовать цикл или преобразовать число в строку и работать с его цифрами отдельно.

function sumDigits($number) {
    $sum = 0;
    $digits = str_split($number); // преобразуем число в массив цифр
    foreach ($digits as $digit) {
        $sum += intval($digit); // суммируем цифры
    }
    return $sum;
}

Шаг 2: Проверка на делимость

После того, как мы получили сумму цифр числа, мы можем проверить, делится ли само число на эту сумму без остатка.

function isHarshad($number) {
    $sum = sumDigits($number); // получаем сумму цифр числа
    return $number % $sum === 0; // проверяем на делимость
}

Пример использования

$number = 18;
if (isHarshad($number)) {
    echo "$number - это харшад!";
} else {
    echo "$number - не является харшадом.";
}

Этот код выведет: “18 - это харшад!”, так как сумма цифр числа 18 равна 9, и 18 делится на 9 без остатка.

Обнаружили ошибку в этой статье? Хотите уточнить, обновить или добавить что-то?
Все мои статьи доступны для редактирования на GitHub. Буду благодарен за любое улучшение или исправление!