約數個數定理 約數和定理

2022-09-18 05:24:44 字數 1044 閱讀 1940

1、如果我們要求乙個數的所有因數的個數會怎麼去求呢?

首先想到最簡單的方法就是暴力求解就可以。當然資料小、或者測試資料少就很簡單就可以過了。

2、如果求乙個區間內的數的所有因數的個數呢?或者求乙個區間內的數的因數最大的數以及最大的因數(正因數)的個數?

這樣的話,資料大一些,組數多一些,可能就要tle,所以可以想到用唯一分解定理,但是那是適用於分解成素因數,要怎麼轉化呢?

這就需要用到了約數個數定理。

對於乙個大於1正整數n可以分解質因數:

則n的正約數的個數就是   

。其中a1、a2、a3…ak是p1、p2、p3,…pk的指數。

3、如果我們需要求這個區間內具有最大個數因數的這個數的所有因數之和怎麼辦呢?

因為剛剛是按素因數來分解的,如果只是加上相應的次方數,肯定是不對的,那麼要怎麼解決這個問題呢,當時想了好久,不過腦子笨,採用各種暴力,當然也有成效,不過還是看看下面這個方法吧。

對於乙個大於1正整數n可以分解質因數:n=p1^a1*p2^a2*p3^a3*…*pk^ak,

則由約數個數定理可知n的正約數有(a₁+1)(a₂+1)(a₃+1)…(ak+1)個,

那麼n的(a₁+1)(a₂+1)(a₃+1)…(ak+1)個正約數的和為

f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak)。

這個公式蠻好理解,但是要怎麼去實現呢?

先把素因子存起來,再把冪指數存起來,最後依次加上,這樣的方法當然可以,但是總歸比較麻煩。

來看一下這個定理:設正整數n有素因子分解 n =(p1^α1)*(p2^α2)*(p3^α3)* ....... *(pk^αk),那麼

所有因數和  σ(n)=[(p1^α1)-1 ] /(p1-1)

* [(p2^α2)-1 ] / (p2-1)

* .....  *

[(pk^αk)-1 ]/(pk-1)

那麼在每次遍歷到該因數數,直接算一下累加起來就可以了。

**板子回來再寫qaq.

約數個數定理and約數和定理

定理 對於乙個大於1正整數n可以 分解質因數 則n的正約數 的個數就是 證明 省略 舉個栗子 例題 正整數378000共有多少個 正約數?解 將378000 分解質因數378000 2 4 3 3 5 3 7 1 由約數個數定理可知378000共有正約數 4 1 3 1 3 1 1 1 160個。c...

約數個數定理 約數和定理

1 如果我們要求乙個數的所有因數的個數會怎麼去求呢?首先想到最簡單的方法就是暴力求解就可以。當然資料小 或者測試資料少就很簡單就可以過了。2 如果求乙個區間內的數的所有因數的個數呢?或者求乙個區間內的數的因數最大的數以及最大的因數 正因數 的個數?這樣的話,資料大一些,組數多一些,可能就要tle,所...

約數個數定理

編輯 對於乙個大於1正整數n可以 分解質因數 則n的 正約數的個數就是 其中a 1 a2 a 3 ak是p 1 p2 p 3,p k的指數。編輯首先同上,n可以 分解質因數 n p1 a1 p2 a2 p3 a3 pk ak,由約數定義可知p1 a1的約數有 p1 0,p1 1,p1 2.p1 a1...