求助,求水仙花数这道题是什么意思
编写一个程序,求 100~999 之间的所有水仙花数。如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
求助这里第二行第三行代表什么意思,以及 (temp%10) ** 3和temp //= 10 是什么意思 %10是求个位数,**3是求个位数的三次方,//10是求temp的百位数和十位数,变成一个两位数 不知道你说的第二行和第三行不是指变量赋值的那两句,我还是说一下,sum = 0,temp=i,就是吧0赋给sum,把for循环100-1000的数依次赋给temp;至于后面的(temp%10)**3则表示 i 对10取余,并且求这个余数的三次方;temp//=10可以展开写成temp = temp//10,代表把temp对10取整除数,并且再赋值给temp。 for i in range(100, 1000):
sum = 0# 所有位的三次方的和
temp = i
while temp:# 循环直至temp为零
sum = sum + (temp%10) ** 3# temp%10获得temp的个位数,此处sum加上个位的三次方
temp //= 10 # temp地板除10,比如数字位321,此时就变为32,然后开始循环
# 以321为例,分别进行了 sum = 0 + 1 ** 3 321//=10 变为32
# sum = 1 + 2 ** 332//=10 变为3
# sum = 9 + 3 ** 33//=10 变为0 跳出循环
if sum == i:# 如果两者相等,则为水仙花数
print(i) 如题 ,如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
那么,首先我们是不是要获取它的百十个位数分别对应的数字,好的,我们一个个来看。
153 // 10 地板除10是不是可以得到得到它的前面两位数,而% 10因为十位和百位上的数必定是10的倍数,也就是说一定会被整除,那么余下的就是个位数,没错吧。
那么到这里是不是就获取到了我们所需要的这3个数。然后就是每个数字的立方,再把3个立方相加得到立方和,你看是不是这么个逻辑。
代码在下面:
for i in range(100, 1000):
sum = 0# 所有位的三次方的和
temp = i
while temp:# 循环直至temp为零
sum = sum + (temp%10) ** 3# temp%10获得temp的个位数,此处sum加上个位的三次方
temp //= 10 # temp地板除10,比如数字位321,此时就变为32,然后开始循环
# 以321为例,分别进行了 sum = 0 + 1 ** 3 321//=10 变为32
# sum = 1 + 2 ** 332//=10 变为3
# sum = 9 + 3 ** 33//=10 变为0 跳出循环
if sum == i:# 如果两者相等,则为水仙花数
print(i)
页:
[1]