在下面的两篇文章里面,我用简单却低效的方法搜寻水仙花数,结果在搜寻8位数的水仙花数的时候,用时长达半个小时。
本文,学习大牛们的一种改进的算法。这是一种基于python的方法。
工具/原料
电脑
python3.6
方法/步骤
1
首先,我需要加载两个模块:
from itertools import combinations_with_replacement
from time import clock
2
再定义一个筛选n位数的水仙花数的函数。
3
然后开始搜寻水仙花数,分别搜寻3位数到19位数的水仙花数,同时测试代码运行时间。
4
运行,可以发现,3位数到8位数的水仙花数,用时都不超过1秒。
5
9位数到15位数的水仙花数,用时都不超过1分钟。
6
随着位数的增加,用时越来越长,哪怕一个水仙花数都没有,也不会节省一秒钟时间。
比如,不存在18位数的水仙花数,但是用时却超过了4分钟;
19位数的水仙花数有4个,用时超过6分钟。
END
注意事项
后面,我会介绍大牛们更厉害的代码,是基于Mathematica的代码。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部