1. 程式人生 > >求一個正整數N的因子個數或該正整數N的所有因子之和

求一個正整數N的因子個數或該正整數N的所有因子之和

如果要求一個正整數N的因子個數,只需要對其質因子分解,得到各質因子$P_i$的個數分別為$e_1$、$e_2、...、e_k$,於是N的因子個數就是$(e_1+1)*(e_2+1)*...*(e_k+1)$。原因是對每個質因子$P_i$都可以選擇其出現$0$次、$1$次、...、$e_i$,共$e_i+1$種可能,組合起來就是答案。而由同樣的原理可知,N的所有因子之和為


$\begin{equation}\begin{split}
&(1+{P_1}+{P_1}^2+\ldots+{P_1}^{e_1})*(1+{P_2}+{P_2}^2+\ldots+{P_2}^{e_2})*\ldots*(1+{P_k}+{P_k}^2+\ldots+{P_k}^{e_k})\\
&={\frac{1-{P_1}^{e_1+1}}{1-P_1}}*{\frac{1-{P_2}^{e_2+1}}{1-P_2}}*\ldots*{\frac{1-{P_k}^{e_k+1}}{1-P_k}}\\
\end{split}\end{equation}$