最多约数问题

weizhenhua 2008-03-09 08:41:27
问题描述:两个数(a,b)之间求一个数,使得该数的约数最多。

各位高手有没有更好的方法使得该问题的效率很高,使得程序在1秒内得出结果,如a,b分别取1,10000000000,程序结束的时间为1秒之内。。 求救啊!!!!!!
...全文
772 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xianyuxiaoqiang 2008-08-08
  • 打赏
  • 举报
回复
易知,如果b>2a,就可以用上述简单方法。
如果b<=2a,需要进一步考虑。
xianyuxiaoqiang 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 coverallwangp 的回复:]
引用 6 楼 ReViSion 的回复:
其实没有这么难,
只要求最小质数2的次方
在指定数字其间的最大值就可以啦


这个问题就是2^n,要小于等于10000000000,n能取到33,即这个数是8589934592
[/Quote]
如果a=9,b=12,就不能用上述方法了。这时就要想更好的方法。
coverallwangp 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ReViSion 的回复:]
其实没有这么难,
只要求最小质数2的次方
在指定数字其间的最大值就可以啦
[/Quote]

这个问题就是2^n,要小于等于10000000000,n能取到33,即这个数是8589934592
ACzhang 2008-08-08
  • 打赏
  • 举报
回复
什么意思?
ReViSion 2008-03-11
  • 打赏
  • 举报
回复
其实没有这么难,
只要求最小质数2的次方
在指定数字其间的最大值就可以啦


weizhenhua 2008-03-11
  • 打赏
  • 举报
回复
coding_hello能不能讲清楚点。。 具体过程是怎样的,是对素数进行枚举还是对a到b之间的数进行枚举?
startlive 2008-03-09
  • 打赏
  • 举报
回复
就是比较小的那些素数。。
野男孩 2008-03-09
  • 打赏
  • 举报
回复
小于sqrt(b)的素数
weizhenhua 2008-03-09
  • 打赏
  • 举报
回复
楼上的能不能说清楚点,取出最前面的一些素数是什么意思
startlive 2008-03-09
  • 打赏
  • 举报
回复
搜索
如果n = a1^p1*a2^p2*...*ak^pk,那么约数个数等于(p1+1)*(p2+1)*...*(pk+1)
对于相同的指数形式,显然越小的a越好。
取出最前面的一些素数,然后搜索就ok啦。。1s之内应该能出解。楼主试试看。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧