sljshen 发表于 2022-10-16 15:25:15

大神,水仙花数程序流程图总画不好,求一个。

'''求解 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。
例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
'''
for num in range(100,1000):
    for i in range(0,10):
      for j in range(0,10):
            for w in range(0,10):
                if(num==pow(i,3)+pow(j,3)+pow(w,3))and(str(i)+str(j)+str(w)==str(num)):
                  print(num)

wp231957 发表于 2022-10-16 15:47:52

流程图毛线用都木有

jackz007 发表于 2022-10-16 17:26:24

本帖最后由 jackz007 于 2022-10-16 17:29 编辑

      水仙花数的代码会这么卷???
for num in range(100 , 1000):
    if num == (num // 100) ** 3 + (num // 10 % 10) ** 3 + (num % 10) ** 3 :
      print(num)

fcage 发表于 2022-10-16 17:31:07

流程图没啥必要吧,先给个我写的算法,Python还是比C简单的
for num in range(100, 1000):
    li=
    sum = 0
    for i in li:
      sum += i**3
    if sum == num:
      print(num)
概述下来就是,从101一直遍历到999,对每一个数进行判断:
将每个数拆分开来,按题目要求计算求和比较。
中间只是用了些类型转换的操作,整个思路应该是很清晰简单的吧。
而且你原本那个4个for有点多余,一个就够了

2971739074 发表于 2022-10-16 18:39:23

本帖最后由 2971739074 于 2022-10-16 18:41 编辑

for a in range(0,10):
    for b in range(10):
      for c in range(10):
            lop=a*100+b*10+c
            lpi=a**3+b**3+c**3
            if lop==lpi:
               print(lop)
一开始我也是老多迭代
页: [1]
查看完整版本: 大神,水仙花数程序流程图总画不好,求一个。