Проверка числа Армстронга

Положительное целое число — число Армстронга порядка n, если оно равно сумме n-ных степеней своих цифр:

abcd... = a^n + b^n + c^n + d^n + ...

Для трёхзначного числа Армстронга сумма кубов цифр совпадает с самим числом. Например:

153 = 1*1*1 + 5*5*5 + 3*3*3   // 153 — число Армстронга.

Что нужно знать

Перед изучением примера полезно понимать:

Решение 1. Для трёхзначного числа

# Python program to check if the number is an Armstrong number or not

# take input from the user
num = int(input("Enter a number: "))

# initialize sum
sum = 0

# find the sum of the cube of each digit
temp = num
while temp > 0:
   digit = temp % 10
   sum += digit ** 3
   temp //= 10

# display the result
if num == sum:
   print(num,"is an Armstrong number")
else:
   print(num,"is not an Armstrong number")

Вывод 1

Enter a number: 663
663 is not an Armstrong number

Вывод 2

Enter a number: 407
407 is an Armstrong number

Программа просит пользователя ввести число и проверяет его. Цикл while извлекает по одной цифре через остаток от деления на 10 (temp % 10) — это всегда последняя цифра числа. Каждая цифра возводится в куб через оператор ** и прибавляется к sum. Затем целочисленное деление temp //= 10 убирает последнюю цифру. Когда temp становится 0, цикл завершается, и накопленная сумма сравнивается с исходным числом.

Решение 2. Для числа с произвольным количеством цифр

num = 1634

# Changed num variable to string,
# and calculated the length (number of digits)
order = len(str(num))

# initialize sum
sum = 0

# find the sum of the cube of each digit
temp = num
while temp > 0:
   digit = temp % 10
   sum += digit ** order
   temp //= 10

# display the result
if num == sum:
   print(num,"is an Armstrong number")
else:
   print(num,"is not an Armstrong number")

Здесь порядок числа считается автоматически: len(str(num)) переводит число в строку и возвращает её длину, то есть количество цифр. В сумму добавляется не куб, а order-я степень каждой цифры. Чтобы попробовать другое число, измените значение num.