有關求任意一個正整數的n的因數的個數的求解思路
已知條件:n=p1^a1xp2^a2xp3^a3........xpk^ak;求解n的因數的個數;
求解的主要思想:遞迴
設所有的因數的個數為U1;
則U1會等於什麼呢?
不妨設求得p2^a2xp3^a3.......xpk^ak=U2;
則我們可以這樣考慮:
U1包含3部分:1.只有p1的因素:共有a1種(無非是p1,p1*p1,...)
2.不包含p1: 共有U2種
3.包含p1,但不只是p1: 共有a1xU2種(對於U2中的每一種情況加乘有p1的項,就會構成新的一個因數)
也許你會有疑問,假如有重複怎麼辦?答案是不可能的,因為如果重複的那個數是m,則m存在多種素因數分解式,顯然矛盾。
因此,我們可以得到一個遞推式:U1=a1+U2+a1xU2=a1+(a1+1)U2;但是,有沒有注意到,所有的因數都沒有包含1,顯然我們上面所包含的因素都大於1;
所以設n的所有素因數的個數為C則C=U1+1;
又遞推可知:U2=a2+(a2+1)U3
...............................................
以上遞推式可解得:U1=a1+a2x(a1+1)+a3x(a2+1)x(a1+1)+.......+akx(a[k-1]+1)x(a[k-2]+1)x....(a1+1)
C=U1+1=a1+1+a2x(a1+1)+.....=(a1+1)x(a2+1)+........
發現了吧:最後C=(a1+1)x(a2+1)x(a3+1).........x(ak+1)
以上就是藉助遞迴思想進行求解的過程,可見遞迴還是很強大的。