Python作业原理
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()
请问谁知道检测是否为水仙花数的原理是什么理由 我只会用(x//100)**3+(x%100//10)**3+(x%10)**3 == x 检测是否为水仙花数 Thomason 发表于 2018-10-10 18:23
我只会用(x//100)**3+(x%100//10)**3+(x%10)**3 == x 检测是否为水仙花数
水仙花数的定义:此数的各个位数取x次方之和,与此数相等。取几次方,就要看此数有几位数。
while temp: #如果 temp 为 0,退出循环
153 是一个水仙花数,假设外部循环跑到 153
temp = i, 所以 temp == 153
(temp%10) == 3 # 把个位数取出来
(temp //10) == 15 # 把个位数丢掉 claws0n 发表于 2018-10-10 18:34
水仙花数的定义:此数的各个位数取x次方之和,与此数相等。取几次方,就要看此数有几位数。
while temp: ...
但是它是怎么确保为每一位数的三次方之和?只有一个个位和百位十位的整合,定义不是向我写的那样吗? Thomason 发表于 2018-10-10 18:54
但是它是怎么确保为每一位数的三次方之和?只有一个个位和百位十位的整合,定义不是向我写的那样吗?
透过循环,把各位数取出来,3次方,累加。一些细节就不说了
第一次 while 153
temp%10 == 3
temp//10 == 15
第二次 while 15
temp%10 == 5
temp//10 == 1
第三次 while 1
...
while 0,退出循环 claws0n 发表于 2018-10-10 19:15
透过循环,把各位数取出来,3次方,累加。一些细节就不说了
第一次 while 153
temp%10 == 3
谢谢{:9_236:}
页:
[1]