这两行代码没看懂,求大神解惑!
本帖最后由 无极圣意 于 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
这里没看懂 首先,要知道什么是水仙花数,水仙花数是指一个 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不是水仙花数 Justin1 发表于 2020-4-29 21:28
首先,要知道什么是水仙花数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如 ...
建议看不懂具体的符号时候,可以从概念本身出发,去理解。遇到不会的去百度,查资料。然后慢慢的一步一步就好理解了 Justin1 发表于 2020-4-29 21:28
首先,要知道什么是水仙花数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如 ...
谢谢解惑~~~
页:
[1]