abc200603 发表于 2021-3-11 23:54:10

python第九课课后习题--关于水仙花数

编写一个程序,求 100~999 之间的所有水仙花数。

如果一个 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 //= 10         # 注意这里要使用地板除哦~
    if sum == i:
      print(i)

我看了很久都看不懂,如果是用奥数方法,怎么解题呢?

小伤口 发表于 2021-3-11 23:59:56

这个帖子解释的非常详细
水仙花数的代码看不太懂,请帮忙解释一下吧
https://fishc.com.cn/thread-187796-1-1.html
(出处: 鱼C论坛)

昨非 发表于 2021-3-12 00:21:05

<font color="red">[已解决]</font>python009课后习题的水仙花数程序看不懂
https://fishc.com.cn/thread-171563-1-1.html
(出处: 鱼C论坛)
<font color="red">[已解决]</font>pyO基础入门课后题 水仙花数
https://fishc.com.cn/thread-185079-1-1.html
(出处: 鱼C论坛)

同一个问题再论坛里无数次被问到,看看已有的答案吧

1589895304 发表于 2021-3-12 00:59:54

本帖最后由 1589895304 于 2021-3-12 01:03 编辑

小伤口 发表于 2021-3-11 23:59
这个帖子解释的非常详细
水仙花数的代码看不太懂,请帮忙解释一下吧
https://fishc.com.cn/thread-187796 ...[/quote

1589895304 发表于 2021-3-12 01:02:01

小伤口 发表于 2021-3-11 23:59
这个帖子解释的非常详细
水仙花数的代码看不太懂,请帮忙解释一下吧
https://fishc.com.cn/thread-187796 ...

这个原理就是把100到1000内,从100开始每次增一个单位的三次方 比如1001**3第二个是1002**3 以此类推,所有数据完毕后!再跟sum也就是和对比,是的就打印出来 !打个比方从一到一百内。算11的三次方。他就是就是从1到一百 他把所有的数字的三次方都打出来。然后再写个条件条件一个一个去对比 如果成立就打印出来其它的不会打印
页: [1]
查看完整版本: python第九课课后习题--关于水仙花数