水仙花数
(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number);
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^ 3 + 5^ 3+ 3^3 = 153。
# 求小于所给三位数中的水仙花数之和
def get_nums(num):
tmp_list = []
for x in range(100, num):
a = x // 100
b = (x // 10) % 10
c = x % 10
if x == a ** 3 + b ** 3 + c ** 3:
tmp_list.append(x)
# 求整个列表的和
res = sum(tmp_list)
return res
if __name__ == '__main__':
# 这里给400,即,求小于400的所有水仙花数之和
num = 400
a = get_nums(num)
print(f"小于 {num}的所有水仙花数之和: ", a)
结果
小于 400的所有水仙花数之和: 894
你也可以将num设置成其他的三位数,同样可以获取到想要的结果;
位数分离的另一种方式
# 位数分离
# a = num % 10 # 分离个位
# b = num % 100 // 10 # 分离十位
# c = num // 100 # 分离百位