1. 程式人生 > >如何求數字n的因數個數及因數和

如何求數字n的因數個數及因數和

ont 可能 簡單 ack 為我 pan -s span ...

我們有可能在某些數學題中會求到某個數的因數和,那我們怎麽求呢?

因為我們知道任意一個合數都可以由兩個或多個質數相乘得到,那麽我們就先分解質因數吧

例:我們隨便去一個數吧,嗯,就108了,好算。。。

我們將108質因數分解:2*2*3*3*3

       也就是:2^2 * 3^3

我們可以看到108的因數有2^0*3^0,2^0*3^1,2^1*3^0,2^1*3^1...

我們可以把他的分配原則畫一下

108的質因數

          2 | 3

------------------------------------------|------------------------------

取()個 0 | 0

1 | 1

2 | 2

| 3

這樣我們就可以輕松的看出來了:總共有3*4=12中配對方式。

假如一個數的質因數分解為a1^p1+a2^p2+......an^pn;

  則共有(p1+1)*(p2+1)*......*(pn+1)個因數;(因為我們還可以取零啊)

但。。。如何求這些因數的和呢

  其實很簡單:就如108而言:SUM=2^0*(3^0+3^1+3^2+3^3)+2^1*(3^0+3^1+3^2+3^3)+2^2*(3^0+3^1+3^2+3^3)

                  =(2^0+2^1+2^2) * (3^0+3^1+3^2+3^3)

那麽也可以得到這樣一個推論:

  若一個質數分解為a1^p1+a2^p2+......an^pn;

     那麽SUM=(a1^0+a1^1+a1^2+...+a1^p1) * (a2^0+a2^1+a2^2+...+a2^p2) * ...... * (an^0+an^1+an^2+...+an^pn)

很簡單,很好推,也很好證,更有用!

如何求數字n的因數個數及因數和