珠江东之虎 发表于 2020-11-8 21:49:51

求帮忙,我想做一个求三位数的所有水仙花数的程序,为什么我这段代码跑起来结果不对

for a in range(100,1000):
    for i in range(1,10):
   for j in range(0,9):
             for k in range(0,9):
               if a==i**3+j**3+k**3:
                  print(a)
               

昨非 发表于 2020-11-8 21:56:36

本帖最后由 昨非 于 2020-11-8 21:58 编辑

你把两种方法搞混了
for i in range(100,1000):
   a = (i //100)
   b = ((i - 100*a)//10)
   c = (i % 10)
   s = a**3+b**3+c**3
   if i == s:
       print(i)

for i in range(100, 1000):#遍历100到1000所有整数
   sum = 0#定义求和变量,初值为0
   temp = i
   while temp:#当i得值不等于0时,一直循环
       sum = sum + (temp%10) ** 3 #temp取余10得到最后一位的数值,sum等于temp各位数之和
       temp //= 10         # 注意这里要使用地板除哦~   这里得到temp的前两位
   if sum == i: #判断i是否等于其各位数的三次方之和
       print(i)#打印满足情况的i得值

昨非 发表于 2020-11-8 22:00:51

或者这样for i in range(1,10):
    for j in range(0,9):
      for k in range(0,9):
            if i*100+j*10+k==i**3+j**3+k**3:
                print(i*100+j*10+k)

昨非 发表于 2020-11-8 22:01:46

三种方法,满意的话记得给个最佳答案

小可爱. 发表于 2020-11-9 10:08:15

昨非 发表于 2020-11-8 22:01
三种方法,满意的话记得给个最佳答案

最佳答案那个   第二个和第三个range里面的应该是range(0,10)吧    这才是从0到9吧

昨非 发表于 2020-11-9 10:56:06

小可爱. 发表于 2020-11-9 10:08
最佳答案那个   第二个和第三个range里面的应该是range(0,10)吧    这才是从0到9吧

对的,上面的确实不对,感谢指正
页: [1]
查看完整版本: 求帮忙,我想做一个求三位数的所有水仙花数的程序,为什么我这段代码跑起来结果不对