求解 100~999 之间的所有水仙花数,num在开始已定义了100,运行结果为啥还包括0、1呢
如果一个 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
这样改一下,你就会发现问题出在哪里、
for a in range(1,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) 冬雪雪冬 发表于 2021-12-16 10:03
这样改一下,你就会发现问题出在哪里、
谢谢!懂了!
原来虽然开始我把num初始化为100l了,但是因为for循环中的 abc,这行num = a * 100 + b * 10 + c代码又重新给num进行了赋值
页:
[1]