对于
n
=
p
1
x
1
p
2
x
2
⋯
p
k
x
k
n=p_1^{x_1}p_2^{x_2}\cdots\ p_k^{x_k}
n=p1x1p2x2⋯ pkxk有
因子数:
(
x
1
+
1
)
(
x
2
+
1
)
⋯
(
x
k
+
1
)
=
Π
i
=
1
k
(
x
i
+
1
)
(x_1+1)(x_2+1)\cdots(x_k+1)=\Pi_{i=1}^{k}{(x_i+1)}
(x1+1)(x2+1)⋯(xk+1)=Πi=1k(xi+1)
因子和:
p
1
x
1
+
1
−
1
p
1
−
1
p
2
x
2
+
1
−
1
p
2
−
1
⋯
p
k
x
k
+
1
−
1
p
k
−
1
=
Π
i
=
1
k
(
p
i
x
i
+
1
−
1
p
i
−
1
)
\frac{p_1^{x_1+1}-1}{p_1-1}\frac{p_2^{x_2+1}-1}{p_2-1}\cdots\frac{p_k^{x_k+1}-1}{p_k-1}=\Pi_{i=1}^{k}{(\frac{p_i^{x_i+1}-1}{p_i-1})}
p1−1p1x1+1−1p2−1p2x2+1−1⋯pk−1pkxk+1−1=Πi=1k(pi−1pixi+1−1)
int get_num(int n){
int ans = 1;
for(int i = 2; i*i <= n; ++i){
if(n%i == 0){
int res = 0;
while(n%i == 0){
res++;
n /= i;
}
ans *= (res+1);
}
}
if(n>1) ans *= 2;
return ans;
}
int get_sum(int n){
int ans = 1;
for(int i = 2; i*i <= n; ++i){
if(n%i == 0){
int res = 1;
while(n%i == 0){
res *= i;
n /= i;
}
ans *= (res-1)/(i-1);
}
}
if(n>1) ans *= (n+1);
return ans;
}