Харшадское число, также известное как число Нивена, является числом, которое делится на сумму своих цифр. Другими словами, если число делится на сумму его цифр без остатка, то оно считается харшадским числом. В этой статье мы рассмотрим, как можно определить, является ли число харшадом или нет с помощью Python.
Числа харшад, или числа Нивена, — натуральные числа, делящиеся нацело на сумму своих цифр.
Таким числом является, например, 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 |
Для начала определим функцию, которая будет проверять, является ли данное число харшадом или нет. Мы можем использовать следующий алгоритм:
True
, если число является харшадом, и False
в противном случае.Давайте реализуем эту функцию:
def is_harshad(number):
# Преобразуем число в строку для работы с его цифрами
num_str = str(number)
# Вычисляем сумму цифр числа
digit_sum = sum(int(digit) for digit in num_str)
# Проверяем, делится ли число на сумму его цифр без остатка
return number % digit_sum == 0
Теперь давайте протестируем нашу функцию на нескольких примерах:
# Пример 1: Проверка харшадского числа
print(is_harshad(18)) # True
# 18 / (1 + 8) = 18 / 9 = 2
# Пример 2: Проверка нехаршадского числа
print(is_harshad(19)) # False
# 19 / (1 + 9) = 19 / 10 != integer
# Пример 3: Большое харшадское число
print(is_harshad(1729)) # True
# 1729 / (1 + 7 + 2 + 9) = 1729 / 19 = 91