标题:一个自然数问题,新手小白求解答
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 8楼 wmf2014
“最优”就不敢说了,能更优些就好了。
2016-06-05 07:59
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
回复 10楼 吹水佬
这样啊,记下所有最高的耗时应该忽略不计吧。其实我们找因数的方法差不多,都是到sqrt(n)循环,只是我只做偶数的判断,不用申请堆,加快了速度。
我觉得还是要用数学的方法,看我在9楼的补充分析,不知道能不能有启发。

能编个毛线衣吗?
2016-06-05 08:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 12楼 wmf2014
用数学方法理论上是更科学更高效。
但要考虑的是:数学的理论式子直接在计算机是否有可操作性?也许先做成可能出现的因式模型,再发挥计算机的逻辑判断运算能力,不知可否?
2016-06-05 08:37
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
上面用到的复杂度为O(sqrt(n))算法,也算是数学方法。
数学理论证明过程:
假设:
x 为正整数
m 为正整数
使得 x * m = n
且 x > sqrt(n)
则 1 <= m <= sqrt(n)
否则 x * m > sqrt(n) * sqrt(n) = n 与 x * m = n 矛盾
即,如果存在两个正整数 x、m,使得 x * m = n,就 x、m 中必有一个在 [1, sqrt(n)]中。
2016-06-05 08:50
灰小机
Rank: 2
来 自:月亮
等 级:论坛游民
威 望:1
帖 子:28
专家分:42
注 册:2016-6-5
得分:0 
差不多大的偶数好像都比奇数的因子多,1,2除外
2016-06-05 13:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-465535-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.896085 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved