約數個數 約數之和

2022-07-08 00:24:13 字數 1400 閱讀 9026

給乙個數n,求它的約數個數

因為n可以唯一分解成質因數的乘積即\(n = p_1^p_2^...p_t^\),所以n的約數c的形式應該是\(c= p_1^p_2^...p_t^\),對於任何兩組不同的\(\beta 1,...,\beta t\)的取值,由算數基本定理得c是不同的,由於\(\beta i\)的取值為\(0,1,...,\alpha i\)共\((\alpha i + 1)\)種,所以由乘法原理得:n約數個數為\((\alpha 1 + 1)\times...(\alpha t + 1)\).

給定n個正整數ai,請你輸出這些數的乘積的約數個數,答案對1e9+7取模。

#include#includeusing namespace std;

#define ll long long

const int mod = 1e9 + 7;

int n;

unordered_mapprimes;

int main()

if(a > 1) primes[a] ++;

}ll res = 1;

for(auto t : primes) res = res * (t.second + 1) % mod;

cout << res;

return 0;

}

給乙個數n,求它的約數之和

公式:\(sum = (p_1^+p_1^+...+p_1^)\times...(p_t^+p_t^+...+p_t^)\),把右側展開,共有\((\alpha 1 + 1)\times...(\alpha t + 1)\)項相加,並且每一項都是乙個約數。

給定n個正整數ai,請你輸出這些數的乘積的約數之和,答案對1e9 + 7取模。

#include#includeusing namespace std;

#define ll long long

const int mod = 1e9 + 7;

int n;

unordered_mapprimes;

int main()

if(a > 1) primes[a] ++;

}ll res = 1;

for(auto prime : primes)

cout << res;

return 0;

}

**裡有乙個計算\(1 + p^1 + p^2 + p^3 +… + p^a\)多項式的技巧:

res = 1

for(int i = 1; i <= a; i ++) res = res * p + 1;

求約數的個數(約數個數定理)

最近做了乙個要求求乙個數約數個數的題,後來發現居然有這方面的定理,也就是約數個數定理,所以趕緊記下來。大概是 對於乙個大於1正整數n可以分解質因數 n p1 a1 p2 a2 p3 a3 pk ak,則n的正約數的個數就是 a1 1 a2 1 a3 1 ak 1 其中p1,p2,p3,pk都是n的質...

約數個數定理

編輯 對於乙個大於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...

數論 約數個數

這題是個大水題,只不過資料稍微大了點。結果大家都用那啥的模擬。結果哈哈哈哈哈哈。求a b之間每個數的約數個數的總和。input 一行兩個正整數a b,以乙個空格隔開。output 一行乙個整數,即答案。資料範圍 對於50 的資料,1 a b 1000 對於100 的資料,1 a b 10,000,0...