Python实现n位水仙花数计算与性能分析
本文通过Python代码详解如何计算n位水仙花数,涵盖3位、4位及3至8位数的遍历实现。文章提供了完整的代码片段与运行结果,并指出随着位数增加(如8位数),计算耗时显著上升,为理解算法复杂度与性能优化提供参考。
水仙花数定义与示例
所谓n位数“水仙花数”,是指一个n位数,其各位数字的n次方之和等于该数本身。例如,三位数水仙花数即指一个三位数,其各位数字的立方和等于该数自身。
首先展示三位数水仙花数的具体查找结果。
三位数水仙花数实现
list2=[]
for i in range(100,1000):
str1=str(i)
sum1=0
for j in str1:
num=int(j)
sum1+=num**3
if i==sum1:
list2.append(i)
print(list2)
程序运行后的输出如下:
[153, 370, 371, 407]
接下来,将范围扩展至任意n位数的水仙花数查找。
设定变量 n=4,表示查找4位数的水仙花数,其中n的值可根据需求自由调整。
n位水仙花数通用算法
list2=[]
for i in range(10**(n-1),10**n):
str1=str(i)
sum1=0
for j in str1:
num=int(j)
sum1+=num**n
if i==sum1:
list2.append(i)
print(list2)
针对4位数的运行结果如下:
[1634, 8208, 9474]
进一步,实现遍历3位至8位数的所有水仙花数。
3至8位数遍历与性能观察
'''遍历3-8位数水仙花数'''
for n in range(3,9):
list2=[]
for i in range(10**(n-1),10**n):
str1=str(i)
sum1=0
for j in str1:
num=int(j)
sum1+=num**n
if i==sum1:
list2.append(i)
print("%d位数水仙花数,共%d个:%s"%(n,len(list2),list2))
各位数范围的水仙花数统计结果如下:
3位数水仙花数,共4个:[153, 370, 371, 407] 4位数水仙花数,共3个:[1634, 8208, 9474] 5位数水仙花数,共3个:[54748, 92727, 93084] 6位数水仙花数,共1个:[548834] 7位数水仙花数,共4个:[1741725, 4210818, 9800817, 9926315]
值得注意的是,当计算位数达到8位时,数据量较大,计算耗时显著增加,示例中运行五分钟仍未得出结果。
总结
以上内容介绍了使用Python打印n位水仙花数的实现方法,希望能对读者有所帮助。如有任何疑问,欢迎留言交流,小编会及时回复。感谢对本站的支持! 若觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













