主题:请大家帮我看看。
万里长城
[专家分:340] 发布于 2008-03-15 14:20:00
题目是这样的:一个自然数N的正因子个数记为F(N),例如18的所有正因数为:1,2,3,6,9,18,所以F(18)=6。现在给出K,求所有满足F(N)的N中最小的数。
程序我已经编好了,在附件里。可运行时间很长,最多话了20秒,请大家帮我看看这是为什么。
回复列表 (共4个回复)
沙发
angwuy [专家分:2280] 发布于 2008-03-15 18:11:00
很明显是算法不对
板凳
万里长城 [专家分:340] 发布于 2008-03-15 19:12:00
???能运行呀!算法怎么有问题?
3 楼
angwuy [专家分:2280] 发布于 2008-03-16 08:58:00
算法效率太底了
用公式来解决:
M=X1^Y1*X2^Y2*X3^Y3*...*Xn^Yn //把M分解质因数
F(M)=(Y1+1)*(Y2+1)*(Y3+1)*...(Yn+1) //那么M的约数就有这么多
4 楼
万里长城 [专家分:340] 发布于 2008-03-16 17:14:00
谢谢,小学学的方法我居然给忘了。
我来回复