Python 判断一个数字是否为 Armstrong 数(自恋数)
Armstrong 数(自恋数)是指一个 n 位数,其每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个 Armstrong 数,因为 1^3 + 5^3 + 3^3 = 153。
实例
def is_armstrong_number(num):
# 将数字转换为字符串以方便计算位数
num_str = str(num)
n = len(num_str)
# 计算每个位上的数字的 n 次幂之和
sum_of_powers = sum(int(digit) ** n for digit in num_str)
# 判断是否为 Armstrong 数
return sum_of_powers == num
# 测试
number = 153
if is_armstrong_number(number):
print(f"{number} 是一个 Armstrong 数")
else:
print(f"{number} 不是一个 Armstrong 数")
# 将数字转换为字符串以方便计算位数
num_str = str(num)
n = len(num_str)
# 计算每个位上的数字的 n 次幂之和
sum_of_powers = sum(int(digit) ** n for digit in num_str)
# 判断是否为 Armstrong 数
return sum_of_powers == num
# 测试
number = 153
if is_armstrong_number(number):
print(f"{number} 是一个 Armstrong 数")
else:
print(f"{number} 不是一个 Armstrong 数")
代码解析:
num_str = str(num)
:将输入的数字转换为字符串,以便计算其位数。n = len(num_str)
:计算数字的位数。sum_of_powers = sum(int(digit) ** n for digit in num_str)
:计算每个位上的数字的 n 次幂之和。return sum_of_powers == num
:判断计算得到的和是否等于原始数字,如果是则返回 True,否则返回 False。
输出结果:
153 是一个 Armstrong 数
点我分享笔记