python找水仙花数_一种基于Python的较快速的水仙花数的搜寻方法

本文介绍了一种基于Python的改进算法,用于高效地搜索水仙花数,尤其是在处理大位数时表现优异。该算法显著减少了搜索8位及以上位数水仙花数所需的时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在下面的两篇文章里面,我用简单却低效的方法搜寻水仙花数,结果在搜寻8位数的水仙花数的时候,用时长达半个小时。

本文,学习大牛们的一种改进的算法。这是一种基于python的方法。

cca2552c56ee7b7f58c28bc16ef4fcf5ef0d4161.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

工具/原料

电脑

python3.6

方法/步骤

1

首先,我需要加载两个模块:

from itertools import combinations_with_replacement

from time import clock

bff8683e21c2bbd60e1c9a5c116186254093ae61.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

2

再定义一个筛选n位数的水仙花数的函数。

e86ba4b842406afec3d906711eee41c1b6279f61.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

3

然后开始搜寻水仙花数,分别搜寻3位数到19位数的水仙花数,同时测试代码运行时间。

5e9a2820b93acd893408d1bb0335dd8a58de8b61.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

4

运行,可以发现,3位数到8位数的水仙花数,用时都不超过1秒。

8b3643dd884ce54a07ea105ba3066b0193ddf761.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

5

9位数到15位数的水仙花数,用时都不超过1分钟。

955ea0e434daf05e70ee8ec5751d96d81919e561.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

6

随着位数的增加,用时越来越长,哪怕一个水仙花数都没有,也不会节省一秒钟时间。

比如,不存在18位数的水仙花数,但是用时却超过了4分钟;

19位数的水仙花数有4个,用时超过6分钟。

db196cdade49610fc09b5ab0a56817e950e1d261.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

END

注意事项

后面,我会介绍大牛们更厉害的代码,是基于Mathematica的代码。

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

展开阅读全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值