Python实现n位水仙花数计算与性能分析

远山来客
远山来客
发布时间:2026-10-13| 4人浏览过
原创

本文通过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位水仙花数的实现方法,希望能对读者有所帮助。如有任何疑问,欢迎留言交流,小编会及时回复。感谢对本站的支持! 若觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。