roger666888 2008-09-11 08:08
浏览 584
已采纳

最多约数问题

 正整数x的约数是能够整除x的正整数,正整数x的约数个数计为div(x),例如1,2,5,10的约数即div(10)=4;
设a,b是两个正整数,a <=b,找出a和b之间的一个数,这个数含有约数个数最多!我原来的想法就是从a到b每一个数都进行一次判断,而且每次判断的时候都是是从2开始进行,例如:这个数是8,就这样判断:8%2,8%3,8%4,8%5,8%6,8%7, 再加上1和它本身两个,div(8)=4,但是这样效率太低了,我想用一个比较高效的算法实现,哪位能够指点一下!谢谢了!

  • 写回答

2条回答 默认 最新

  • xdspower 2008-09-11 11:03
    关注

    (未验证,一个思路)
    理论依据:一个数的约数除了1和本身外都是一个或者多个质因数的乘积,
    比如8=2×2×2
    又如12=2×2×3
    这样其约数就是质数因子的组合乘积(除重复的以外)和1以及自身。
    比如8有1, 2,2×2,8
    12有 1,2,3,2×2,2×3,12
    这样问题就转换成3部,
    1.对数字作质数分解
    2.对分解的质数作组合乘积,并剔除重复数进行计数
    3.比较计数结果得出解

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog