home1.gif


说明: 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上的数字的立方之和正好等于它本身,例如:153 = 1^3 + 5^3 + 3^3 。

1. 分析/思路


分析:

  • 一个 3 位数,可用 range(100, 1000)遍历;
  • 核心是将数子拆分出个位、十位、百位数字。
  1. 一种可将数转换成字符串后,依次取出每个字符;
  2. 使用算术方法:
    1. 个位数:num % 10
    2. 十位数:num // 10 % 10
    3. 百位数:num // 100

2. 程序


【实例 1】寻找水仙花数(使用数学方法)

  1. for num in range(100, 1000):
  2. low = num % 10
  3. mid = num // 10 % 10
  4. high = num // 100
  5. if num == low ** 3 + mid ** 3 + high ** 3:
  6. print(num, end=' ')

【实例 2】寻找水仙花数(数字转换成字符串后拆出每个位上的数)

  1. for num in range(100, 1000):
  2. sum = 0
  3. for i in str(num):
  4. sum += int(i) ** 3
  5. if sum == num:
  6. print(num, end=' ')

2. 扩展


  • 数字技巧

假设给出一个 3 位数 num,那么:

  1. 求余取 num 最后一位数(个位数):num % 10
  2. 整除去掉 num 最后一位数(前几位):num // 10
  3. num 的十位数:num // 10 % 10
  4. num 的百位数:num // 100

其他数字类似计算可得。

end1.gif