约数个数定理约数和定理
1、如果我們要求一個(gè)數(shù)的所有因數(shù)的個(gè)數(shù)會(huì)怎么去求呢?
首先想到最簡(jiǎn)單的方法就是暴力求解就可以。當(dāng)然數(shù)據(jù)小、或者測(cè)試數(shù)據(jù)少就很簡(jiǎn)單就可以過(guò)了。
2、如果求一個(gè)區(qū)間內(nèi)的數(shù)的所有因數(shù)的個(gè)數(shù)呢?或者求一個(gè)區(qū)間內(nèi)的數(shù)的因數(shù)最大的數(shù)以及最大的因數(shù)(正因數(shù))的個(gè)數(shù)?
這樣的話,數(shù)據(jù)大一些,組數(shù)多一些,可能就要Tle,所以可以想到用唯一分解定理,但是那是適用于分解成素因數(shù),要怎么轉(zhuǎn)化呢?
這就需要用到了約數(shù)個(gè)數(shù)定理。
約數(shù)個(gè)數(shù)定理
對(duì)于一個(gè)大于1正整數(shù)n可以分解質(zhì)因數(shù):
???
則n的正約數(shù)的個(gè)數(shù)就是? ?
? ?。
其中a1、a2、a3…ak是p1、p2、p3,…pk的指數(shù)。
(在證明上自己自行百度搜索就可以了。qwq)
3、如果我們需要求這個(gè)區(qū)間內(nèi)具有最大個(gè)數(shù)因數(shù)的這個(gè)數(shù)的所有因數(shù)之和怎么辦呢?
因?yàn)閯倓偸前此匾驍?shù)來(lái)分解的,如果只是加上相應(yīng)的次方數(shù),肯定是不對(duì)的,那么要怎么解決這個(gè)問(wèn)題呢,當(dāng)時(shí)想了好久,不過(guò)腦子笨,采用各種暴力,當(dāng)然也有成效,不過(guò)還是看看下面這個(gè)方法吧。
約數(shù)和定理
對(duì)于一個(gè)大于1正整數(shù)n可以分解質(zhì)因數(shù):n=p1^a1*p2^a2*p3^a3*…*pk^ak,
則由約數(shù)個(gè)數(shù)定理可知n的正約數(shù)有(a?+1)(a?+1)(a?+1)…(ak+1)個(gè),
那么n的(a?+1)(a?+1)(a?+1)…(ak+1)個(gè)正約數(shù)的和為
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)。
這個(gè)公式蠻好理解,但是要怎么去實(shí)現(xiàn)呢?
先把素因子存起來(lái),再把冪指數(shù)存起來(lái),最后依次加上,這樣的方法當(dāng)然可以,但是總歸比較麻煩。
來(lái)看一下這個(gè)定理:設(shè)正整數(shù)n有素因子分解 n =(p1^α1)*(p2^α2)*(p3^α3)* ....... *(pk^αk),那么
? ? ? ? ? ?所有因數(shù)和? σ(n)=[(p1^α1)-1 ] /(p1-1) * [(p2^α2)-1 ] / (p2-1) * .....? *[(pk^αk)-1 ]/(pk-1)
那么在每次遍歷到該因數(shù)數(shù),直接算一下累加起來(lái)就可以了。
代碼板子回來(lái)再寫(xiě)QAQ.
參考文獻(xiàn):百度百科等網(wǎng)絡(luò)資料加上自己理解。
轉(zhuǎn)載于:https://www.cnblogs.com/lcchy/p/10139614.html
總結(jié)
以上是生活随笔為你收集整理的约数个数定理约数和定理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python:Selenium 1:浏览
- 下一篇: Realm 配置