鱼C论坛

 找回密码
 立即注册

4.水仙花数

已有 547 次阅读2016-8-8 15:49 |个人分类:python

水仙花数
水仙花数:一个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='')



路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-6 10:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部