Bruce131102 发表于 2021-9-11 23:57:43

第九讲动动手第1个问求解答

编写一个程序,求 100~999 之间的所有水仙花数

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
      sum = sum + (temp%10) ** 3
      temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
      print(i)

说实话,数学不好,思维实在转不过来。

大马强 发表于 2021-9-12 00:16:25

1.你要了解啥是水仙花数,即xyz = x的三次方 +y的三次方 + z的三次方 百度
2sum = sum + (temp%10) ** 3 # 实现1的条件
      temp //= 10         # 地板除是向下·整,如果此时 temp 是一个个位数,//10= 0表明此时的 i 不是水仙花数,即temp为 0 跳出 条件不成立

韩大仙 发表于 2021-9-12 12:07:12

水仙花数是个位十位百位的立方和等于自身
counts=0

for num in range(100,1000):
    g = num%10
    s = num//10%10
    b = num//100
    if num == g**3+s**3+b**3:
      counts+=1
   
print(counts)      

傻眼貓咪 发表于 2021-9-12 12:23:15


水仙花數(Narcissistic number){:5_108:}

for i in range(100, 1000): # 預設 100 至 999 區間
    sum = 0 # 預設變量
    temp = i # 重複判斷 i 是否是水仙花數,i 就是 100, 101, 102... 999
    while temp:
      sum = sum + (temp%10) ** 3 # 這裡運用水仙花數公式
      temp //= 10         # 這裡的 // 表示取商
    if sum == i: # sum 和 i 同值就是水仙花數了(水仙花數條件)
      print(i) # 條件達成就打印
页: [1]
查看完整版本: 第九讲动动手第1个问求解答