Проверка числа Армстронга
Положительное целое число — число Армстронга порядка 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
Решение 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.