初学python算法100例-案例12 求水仙花数 多种不同解法

Posted 技术专家团-小兔子编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学python算法100例-案例12 求水仙花数 多种不同解法相关的知识,希望对你有一定的参考价值。

题目

打印出100-999之间所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方

解法1 for循环

程序分析:

1、利用for循环控制100-999个数,

2、每个数分解出个位,十位,百位。

3、在判断这个数是否是个位、十位、百位立方之和     

程序源代码:

print("水仙花数有:")
for n in range(100,1000):
    i = n // 100
    j = n // 10 % 10
    k = n % 10
    if n == i*i*i + j*j*j + k*k*k: 
        print(n)
        

运行结果:

 

解法2 数字组合

程序分析:

1、这是一个三位数

2、每个位数都是由0-9组成

3、判断每个数的立方是不是等于这个数本身     

程序源代码:

print("水仙花数有:")        
for x in range(1,10):
    for y in range(0,10):
        for z in range(0,10):
            s1=x*100+y*10+z
            s2=pow(x,3)+pow(y,3)+pow(z,3)
            if s1==s2:
                print(s1)

运行结果:

解法3 字符串

程序分析:

1、把这个数字看作一个字符串

2、对这个字符串的字符进行数字转换

3、对转换后的数字进行立方求和是否等于本身 

程序源代码:

print("水仙花数有:") 
for i in range(100, 1000):
    s = str(i)
    if (int(s[0]) ** 3 + int(s[1]) ** 3 + int(s[2]) ** 3 == i):
        print(i)

运行结果:

还有更多其他的解法,欢迎一起交流学习

以上是关于初学python算法100例-案例12 求水仙花数 多种不同解法的主要内容,如果未能解决你的问题,请参考以下文章

Python小代码_9_求水仙花数

python如何求水仙花数

python基础----求水仙花数

用C语言 求1000以内的水仙花数

C语言-求三位数的水仙花数

初学python算法100例-案例29 判断回文数