鱼C论坛

 找回密码
 立即注册
查看: 918|回复: 3

[已解决]求解 100~999 之间的所有水仙花数,num在开始已定义了100,运行结果为啥还包括0、1呢

[复制链接]
发表于 2021-12-16 09:53:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
纯粹是想多种方式实现,只是不明白为什么在以下的代码中,num变量已经初始化100了,为什么运行结果还包括0、1呢?

num = 100
while num < 1000:
    for a in range(0,10):
        for b in range(0,10):
            for c in range(0,10):
                num = a * 100 + b * 10 + c
                if num == a ** 3 + b ** 3 + c ** 3:
                    print(num)
    num += 1


>>> 以上代码的运行结果:
0
1
153
370
371
407

用以下代码可以正常输出100-999间的水仙花数:
num = 100
while num < 1000:
    a = int(num / 100)
    b = int((num - a*100) / 10)
    c = num - a*100 - b*10
    if num == a ** 3 + b ** 3 + c ** 3:
        print("水仙花数是:",num)
    num += 1
>>> 以上代码的运行结果:
153
370
371
407
最佳答案
2021-12-16 10:03:37
这样改一下,你就会发现问题出在哪里、
  1. for a in range(1,10):
  2.     for b in range(0,10):
  3.         for c in range(0,10):
  4.             num = a * 100 + b * 10 + c
  5.             if num == a ** 3 + b ** 3 + c ** 3:
  6.                 print(num)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-16 10:03:37 | 显示全部楼层    本楼为最佳答案   
这样改一下,你就会发现问题出在哪里、
  1. for a in range(1,10):
  2.     for b in range(0,10):
  3.         for c in range(0,10):
  4.             num = a * 100 + b * 10 + c
  5.             if num == a ** 3 + b ** 3 + c ** 3:
  6.                 print(num)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-16 10:23:50 | 显示全部楼层
冬雪雪冬 发表于 2021-12-16 10:03
这样改一下,你就会发现问题出在哪里、

谢谢!懂了!
原来虽然开始我把num初始化为100l了,但是因为for循环中的 a  b  c,这行num = a * 100 + b * 10 + c代码又重新给num进行了赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-16 11:07:34 From FishC Mobile | 显示全部楼层
  1. [print(num) for num in range(100, 1000) if (num%10)**3 + ((num%100)//10)**3 + (num//100)**3 == num]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 13:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表