菜鸟学Python之求⽔仙花数
⽔仙花数的意思是说⼀个三位数的百位、⼗位、个位各⾃求⽴⽅后再求和等于这个三位数:153=1^3+5^3+3^3。现在问题来了:请写出⼀段Python程序求出100-999之间的所有⽔仙花数。
整合了⼀下⽹上的答案并结合⾃⼰的思考和实践,⽅法⼤致有三:
1.将百位、⼗位、个位的数字分别设置为变量:
for i in range(1,10):
for j in range(0,10):
for k in range(0,10):
if i*100+j*10+k==i**3+j**3+k**3:
print (i*100+j*10+k,'是⽔仙花数')
这个办法感觉⽐较low,但是能实现,哈
2.反过来,将三位数本⾝设置为变量,运⽤地板除法和求余数法得出百位、⼗位和个位数字:
for flower in range(100,1000):
a = flower//100 #百位数字是flower除以100,然后向下取整
b = flower//10%10 #⼗位数字是flower除以10,向下取整然后再除以10取余
c = flower%10 #个位数字是flower除以10再取余
if flower == a**3+b**3+c**3:
print(flower)
说实话,⼩学⽼师真没教过地板除法和求余法,关键是⼀学到余数就开始学⼩数点和分数了啊,没⼈告诉我余数居然这么有⽤,哭/(ㄒo ㄒ)/~~
3.第三种⽅法对我这种菜鸟来说有点难理解,就是第⼆种⽅法的升级版(加⼊了循环):
for i in range(100,1000):
sum=0
temp=i
while temp:
sum=sum+(temp%10)**3 #这个循环⽐较难理解,根本上还是取余和地板除
temp//=10
if sum == i:
菜鸟教程python2print(i)
反正我⽬前就以第⼆种⽅法为重吧。。
菜鸟继续学习中。。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论