说明: 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上的数字的立方之和正好等于它本身,例如:153 = 1^3 + 5^3 + 3^3 。
1. 分析/思路
分析:
- 一个 3 位数,可用 range(100, 1000)遍历;
- 核心是将数子拆分出个位、十位、百位数字。
- 一种可将数转换成字符串后,依次取出每个字符;
- 使用算术方法:
- 个位数:num % 10
- 十位数:num // 10 % 10
- 百位数:num // 100
2. 程序
【实例 1】寻找水仙花数(使用数学方法)
for num in range(100, 1000):
low = num % 10
mid = num // 10 % 10
high = num // 100
if num == low ** 3 + mid ** 3 + high ** 3:
print(num, end=' ')
【实例 2】寻找水仙花数(数字转换成字符串后拆出每个位上的数)
for num in range(100, 1000):
sum = 0
for i in str(num):
sum += int(i) ** 3
if sum == num:
print(num, end=' ')
2. 扩展
- 数字技巧
假设给出一个 3 位数 num,那么:
- 求余取 num 最后一位数(个位数):num % 10
- 整除去掉 num 最后一位数(前几位):num // 10
- num 的十位数:num // 10 % 10
- num 的百位数:num // 100
其他数字类似计算可得。