Jzz099987 发表于 2024-9-14 21:15:56

求水仙花数,程序运行之后多一个370

for i in range(100, 1000):
    b = 0 #用于求各位数的立方之和
    for x in str(i):
      b += int(x)**3
      if b == i:
            print(i)

FishC 发表于 2024-9-14 21:16:02

你程序中的 `if b == i` 应该在内层循环结束之后再进行判断。否则会在还没有计算完所有位数立方和时就进行判断,导致漏掉一些水仙花数。修正后的程序如下:

for i in range(100, 1000):
    b = 0# 用于求各位数的立方之和
    for x in str(i):
      b += int(x)**3
    if b == i:
      print(i)

现在这个程序会正确输出所有三位数的水仙花数,包括370。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

柿子饼同学 发表于 2024-9-14 21:30:20

if 向左一格u

jackz007 发表于 2024-9-14 22:25:54

for i in range(100, 1000):
    b = 0 #用于求各位数的立方之和
    for x in str(i):
      b += int(x)**3
    if b == i:                     # 判断应该在内层循环结束后,而不是在其内部
      print(i)

Jzz099987 发表于 2024-9-16 09:47:51

FishC 发表于 2024-9-14 21:16
你程序中的 `if b == i` 应该在内层循环结束之后再进行判断。否则会在还没有计算完所有位数立方和时就进行 ...

感谢

FishC 发表于 2024-9-16 09:48:08

Jzz099987 发表于 2024-09-16 09:47
感谢

明白了。以下是修正后的代码,确保输出所有三位数的水仙花数,包括370:

for i in range(100, 1000):
    b = 0# 用于求各位数的立方之和
    for x in str(i):
      b += int(x)**3
    if b == i:
      print(i)

这个程序会正确输出所有三位数的水仙花数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 求水仙花数,程序运行之后多一个370