水仙花数
水仙花数:一个n位数(n>=3)它的每个位上的数字的n次幂之和等于它本身。
例:一个3位数=它各个位上数字的立方和 153=1^3+5^3+3^3
要求编写一个程序:求100~999之间的所有水仙花数。
1.非递归版本:
for i in range(100,1000): #i的范围在100~999之间
sum = 0 #sum赋初值
temp = i #temp范围也在100~999之间
while temp: #循环temp为真往下执行
sum = sum + (temp%10)** 3 #取个位数的意思
temp //= 10
if sum == i:
print(i)
注解:例子,i=153
temp%10:取个位数的意思。153%10等于3,其3次方的值加在sum中。
temp//=10 153//10等于15,while temp的循环条件最终temp等于0.
15%10等于5,5的3次方加在sum中,
15//10等于1 1的3次方加在sum中。
2.递归版本:
def Narcissus(): #定义函数,Narcissus=水仙
for each in range(100, 1000): #each在100~999之间
temp = each #temp范围也在100~999之间
sum = 0 #sum赋初值
while temp: #循环temp为真往下执行
sum = sum + (temp%10) ** 3
temp = temp // 10 # 注意这里用地板除
if sum == each:
print(each, end='\t')
print("所有的水仙花数分别是:", end='')