初学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 求水仙花数 多种不同解法的主要内容,如果未能解决你的问题,请参考以下文章