鱼C论坛

 找回密码
 立即注册
查看: 1441|回复: 4

[已解决]【求助】关于python第九讲的水仙花数计算

[复制链接]
发表于 2020-3-7 11:17:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼给出的答案是
for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
        print(i)

是这个样子的。
但是我用的是用地板除,将各个数位的值算出来再进行
for num in range(100,1000):
     hundred=num//100
     ten=(num//10)%10
     single=num%10
     if num==hundred**3+ten**3+single**3:
          print(num)

但是我看不懂小甲鱼的思路(一点都不懂),能有大神帮我解读一下嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-7 11:23:05 | 显示全部楼层
temp%10得到的是个位数,这个好理解,如123%10为3
temp // 10是去掉最后一位,如123变成了12,再%10,取到的是2,以此类推。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-7 11:28:19 | 显示全部楼层
取i为从100至1000中的一个数;
把0赋初值给sum,把i的值赋予给temp;
当temp不为0时
  求temp与10的余数(即求此时temp的个位数),并3次方后与sum相加再重新赋值给sum;
  把temp地板除以10(舍去当前temp的个位数);
(循环到temp只有一位数后地板除以10为0,跳出循环)
判断此时sum和i是否相等,若相等(即若为水仙花数)则输出i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-7 12:34:56 | 显示全部楼层    本楼为最佳答案   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-7 16:36:05 | 显示全部楼层
我是这样理解的:
判断一个三位数的数字abc,甲鱼的思路是通过while循环
第一次循环:提取出个位数c(即由abc%10得c**3),十位百数ab(即abc//10)
第二次循环:提取出十位数b(即由ab%10得b**3),百位数a(即ab//10)
第三次循环:提取出百位数a(即由a%10得得a**3),这次循环后temp=0 false(此时while false 循环结束)
此时得到sum = a**3 + b**3 + c**3,再判断sum与i是否相等,相等则print(i)
甲鱼的思路与你的思路其实一样(因为水仙花数的判断方式就是这样,都是这个思路)只是实现方法不同而已罢了!
个人理解,欢迎指教。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-23 11:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表