最多约数问题

 正整数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,但是这样效率太低了,我想用一个比较高效的算法实现,哪位能够指点一下!谢谢了!

(未验证,一个思路)
理论依据:一个数的约数除了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.比较计数结果得出解

找出其中2,3的最大公倍数;然后再找出2的最大倍数,3的最大倍数,比较这三个数的公约数谁最多就行了? :oops: