做题的时候碰到的,求整数的约数个数,看似简单的题,但是用常规做法必超时。
于是看到别人分享的约数个数定理,瞬间又涨姿势了。
编辑
对于一个大于1正整数n可以分解质因数:n=p
1^a
1*p
2^a
2*p
3^a
3*…*p
k^a
k,
则n的正约数的个数就是(a
1+1)(a
2+1)(a
3+1)…(a
k+1) .
其中a
1、a
2、a
3…ak是p
1、p
2、p
3,…p
k的指数。
于是乎,很大的问题就被缩小了,例如原题是求10亿数量级的整数的约数个数,开方之后缩小到4万多,不可能再超时了。
解决问题的方法变成了求大整数的质因子。