有關求任意一個正整數的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)

以上就是借助遞歸思想進行求解的過程,可見遞歸還是很強大的。

          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM