鱼C论坛

 找回密码
 立即注册
查看: 1803|回复: 3

[已解决]这两行代码没看懂,求大神解惑!

[复制链接]
发表于 2020-4-29 21:03:20 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 无极圣意 于 2020-4-29 21:04 编辑

编写一个程序,求 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)

其中:
sum = sum + (temp%10) ** 3
temp //= 10

这里没看懂
最佳答案
2020-4-29 21:28:10
首先,要知道什么是水仙花数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
然后就好理解了,我要得到水仙花数,那么就需要将三位数的每一位进行乘方运算(可以写成**,也可以用math.h中的pow函数)。

举例:101
temp = 101
第一次运算   sum = 0 + (101%10)**3 = 0 +1 =1    temp = 101//10 = 10
第二次运算   sum = 1 +(10%10)**3 = 1 + 0 = 1     temp = 10//10 = 1
第三次运算   sum = 1 + (1%10)**3 = 1 + 1 =2       temp =  1//10 = 0
循环结束    2 不等于  101,所以101不是水仙花数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-29 21:28:10 | 显示全部楼层    本楼为最佳答案   
首先,要知道什么是水仙花数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
然后就好理解了,我要得到水仙花数,那么就需要将三位数的每一位进行乘方运算(可以写成**,也可以用math.h中的pow函数)。

举例:101
temp = 101
第一次运算   sum = 0 + (101%10)**3 = 0 +1 =1    temp = 101//10 = 10
第二次运算   sum = 1 +(10%10)**3 = 1 + 0 = 1     temp = 10//10 = 1
第三次运算   sum = 1 + (1%10)**3 = 1 + 1 =2       temp =  1//10 = 0
循环结束    2 不等于  101,所以101不是水仙花数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 21:29:41 | 显示全部楼层
Justin1 发表于 2020-4-29 21:28
首先,要知道什么是水仙花数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如 ...

建议看不懂具体的符号时候,可以从概念本身出发,去理解。遇到不会的去百度,查资料。然后慢慢的一步一步就好理解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-29 22:08:12 | 显示全部楼层
Justin1 发表于 2020-4-29 21:28
首先,要知道什么是水仙花数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如 ...

谢谢解惑~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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