电气崽 发表于 2020-2-8 17:46:44

水仙花数的问题

我想问问我自己写的这个为什么会出现两个371
大佬们教我一下,谢谢了

for i in range(100,1000,1):
    while i == int(i/100)**3 + int((i%100)/10)**3 + int((i%100)%10)**3:
      print(i)
      i +=1

zltzlt 发表于 2020-2-8 17:48:39

根本没必要加 while 循环,for 循环就够了。

for i in range(100, 1000, 1):
    if i == int(i / 100) ** 3 + int((i % 100) / 10) ** 3 + int((i % 100) % 10) ** 3:
      print(i)

EthanHsiung 发表于 2020-2-8 17:50:20

本帖最后由 EthanHsiung 于 2020-2-8 17:52 编辑

有了for循环干嘛还要i+=1?也不需要while

电气崽 发表于 2020-2-8 17:52:18

我刚试了一下 把while 换成if 就好了 这是为什么呢?是有个个循环重复了一次吗?

233倔强不秃 发表于 2020-2-8 18:17:25

本帖最后由 233倔强不秃 于 2020-2-8 18:19 编辑

我个人认为比较好的方法是
sum = 0
for i in range(100,1000):
    temp = i
    while temp:
      sum = (temp%10)**3+sum
      temp = temp//10
      if sum==i
            print(i)
      



页: [1]
查看完整版本: 水仙花数的问题