您的当前位置:首页使用Python求解水仙花问题

使用Python求解水仙花问题

2020-03-14 来源:乌哈旅游
使⽤Python求解⽔仙花问题

题⽬:输出所有的⽔仙花数。所谓⽔仙花数是指⼀个3位数,其各位数字的⽴⽅和等于该数本⾝。例如,153是⼀个⽔仙花数,因为153 = 1⽴⽅ + 5⽴⽅ + 3⽴⽅。解决⽅法:

⽅法⼀:使⽤列表推导式

1 data=[i for i in range(100,1000)if pow(i//100,3)+pow(i//10%10,3)+pow(i%10,3)==i]

这个⽅法是⽐较简单,但是数字只限于100-999,如果超出了这个范围⼜要在除1000,所以在⽅法⼆中我决定使⽤分解的⽅法,将⼀个数字分解成个位、⼗位、百位、千位、万位等,这样便可以⼀直求到很⼤的数字,⽽且代码还⽐较简洁。⽅法⼆:使⽤函数和循环

1 def d(): 2 def f(n):

3 c=list(n[::]) 4 return c

5 for i in range(100,100000): 6 d=f(str(i)) 7 s=0

8 for j in d:

9 s+=pow(int(j),3)10 if(s==int(i)):

11 print(\"%d\"%s)12 d()

程序运⾏结果:153370371407

注解:做完题⽬才发现原来⽔仙花数只有这4个,可是解决问题的时候我们事先是不知道的,所以我个⼈还是⽐较推荐⼤家选择⽅法⼆。

因篇幅问题不能全部显示,请点此查看更多更全内容