小香蕉2009 发表于 2019-7-28 10:50:11

求助解释

如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
      sum = sum + (temp%10) ** 3----------------------------------------为什么是temp变量的余数的3冥次方,
      temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
      print(i)

heidern0612 发表于 2019-7-28 10:57:09

看这个:https://fishc.com.cn/thread-126088-1-1.html

jackz007 发表于 2019-7-28 11:31:10

本帖最后由 jackz007 于 2019-7-28 11:40 编辑

while temp:               # 如果 temp 的值不为 0 就继续循环
    temp % 10             # 取到 temp 的个位数,例如:153 % 10 = 3
    temp = temp // 10   # temp 的所有位向右移动 1 位,百位变十位,十位变个位,个位被除去。例如:153 // 10 = 15

      对 1 个 3 位数来说,while temp: 将循环 3 次,以 temp = 153 为例,3 次循环下来 temp % 10 将依次取到 3、5、1,求取这 3 个数的立方和就可以和原数进行比较了。

小香蕉2009 发表于 2019-7-28 11:44:21

谢谢!

小香蕉2009 发表于 2019-7-28 11:46:10

jackz007 发表于 2019-7-28 11:31
对 1 个 3 位数来说,while temp: 将循环 3 次,以 temp = 153 为例,3 次循环下来 temp % 10 将依 ...

谢谢!
页: [1]
查看完整版本: 求助解释