Поиск чисел Армстронга в диапазоне
Положительное целое число называется числом Армстронга порядка n, если оно равно сумме n-ных степеней своих цифр:
abcd... = a^n + b^n + c^n + d^n + ...
Например, 153 = 1*1*1 + 5*5*5 + 3*3*3, значит 153 — число Армстронга. В этой задаче нужно найти все такие числа в заданном интервале.
Что нужно знать
Перед изучением примера полезно понимать:
Оператор if…else в Python — условный оператор
Python: цикл while — цикл
whileПроверка числа Армстронга — проверка одного числа на принадлежность к числам Армстронга
Пример
# Program to check Armstrong numbers in a certain interval
lower = 100
upper = 2000
for num in range(lower, upper + 1):
# order of number
order = len(str(num))
# initialize sum
sum = 0
temp = num
while temp > 0:
digit = temp % 10
sum += digit ** order
temp //= 10
if num == sum:
print(num)
Вывод
153
370
371
407
1634
Как это работает
Границы диапазона задаются переменными lower и upper. Внешний цикл for с range(lower, upper + 1) перебирает все целые числа в этом интервале.
Для каждого числа определяется его порядок — количество цифр (len(str(num))). Затем внутренний while извлекает цифры одну за другой через остаток от деления на 10 (temp % 10), возводит каждую в степень, равную порядку, и накапливает сумму. Целочисленное деление temp //= 10 отбрасывает последнюю цифру.
Если в итоге накопленная сумма совпадает с исходным числом, оно выводится. Чтобы проверить другой интервал, измените lower и upper (нижняя граница должна быть меньше верхней).