搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 一个自然数问题,新手小白求解答
标题:
一个自然数问题,新手小白求解答
只看楼主
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
11
楼
得分:0
回复 8楼 wmf2014
“最优”就不敢说了,能更优些就好了。
2016-06-05 07:59
wmf2014
等 级:
贵宾
威 望:
216
帖 子:2039
专家分:11273
注 册:2014-12-6
第
12
楼
得分:0
回复 10楼 吹水佬
这样啊,记下所有最高的耗时应该忽略不计吧。其实我们找因数的方法差不多,都是到sqrt(n)循环,只是我只做偶数的判断,不用申请堆,加快了速度。
我觉得还是要用数学的方法,看我在9楼的补充分析,不知道能不能有启发。
能编个毛线衣吗?
2016-06-05 08:20
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
13
楼
得分:0
回复 12楼 wmf2014
用数学方法理论上是更科学更高效。
但要考虑的是:数学的理论式子直接在计算机是否有可操作性?也许先做成可能出现的因式模型,再发挥计算机的逻辑判断运算能力,不知可否?
2016-06-05 08:37
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
14
楼
得分: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
灰小机
来 自:月亮
等 级:
论坛游民
威 望:
1
帖 子:28
专家分:42
注 册:2016-6-5
第
15
楼
得分:0
差不多大的偶数好像都比奇数的因子多,1,2除外
2016-06-05 13:18
15
2/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-465535-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.823570 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved