|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3+5^3+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。
def Narcissus():
for each in range(100, 1000):
temp = each
sum = 0
while temp:
sum = sum + (temp%10) ** 3
temp = temp // 10 # 注意这里用地板除
if sum == each:
print(each, end='\t')
print("所有的水仙花数分别是:", end='')
Narcissus()
红色字的地方不太明白,计算方式
sum = 0
while temp:
sum = sum + (temp%10) ** 3
temp = temp // 10 # 注意这里用地板除
#这里是为了,得到temp的末位数**3,然后再temp除10取整,再取末位数**3,这样循环
当 temp 不是 0 时:
执行 sum = sum + (temp%10) ** 3
temp = temp // 10
第一次执行(以153为例):
sum = 0 + (153%10 '''这里是先获得最后一位数:3''')**3
temp = temp//10 #这里去除 temp的个位数取整(可以使用shell去测试:153//10)
第2次执行(以153为例):
sum = 27 + (15%10 '''这里是先获得最后一位数:5''')**3
temp = temp//10 #这里再去除 temp的个位数取整(可以使用shell去测试:15//10)
第3次执行(以153为例):
sum = 152 + (1%10 '''这里是先获得最后一位数:1''')**3
temp = temp//10 #这里再去除 temp的个位数取整,等于0时结束while循环(可以使用shell去测试:1//10)
|
|