将a进行质因数分解,则a^b=(p1^k1)*(p2^k2)*...*(pn^kn)
根据公式,所有因子之和为
(1+p1+p1^2+...p1^k1)*(1+p2+p2^2+...p2^k2)*...*(1+pn+pn^2+...+pn^kn)
计算1+p+p^2+...p^n可以利用二分进行加速
当n为奇数时,例如n=5
则1+p+p^2+p^3+p^4+p^5=(1+p+p^2)+p^3*(1+p+p^2)=(1+p+p^2)*(1+p^3)
可以发现1+p+p^2+...p^n=(1+p+p^2+...+p^(k/2))*(1+p^(k/2+1))
当n为偶数时,例如n=4
则1+p+p^2+p^3+p^4=(1+p)+p^3*(1+p)+p^2=(1+p)*(1+p^3)+p^2
可以发现1+p+p^2+...p^n=(1+p+p^2+...+p^(k/2-1))*(1+p^(k/2+1))+p^(k/2)
代码: