【唯一分解定理】
又稱算術基本定理,可以描述爲:任意一個大於1的正整數都能表示成若干個質數的乘積,且表示的方法是唯一的。換句話說,一個數能被唯一地分解成質因數的乘積。
公式:,
因子數:
p1可以取的個數爲[0, a1],p2可以取的個數爲[0, a2],pk可以取的個數爲[0, ak],根據乘法原理,總的因子個數就是這些指數+1的連乘,即(1 + Ye1) * (1 + Ye2) * ... * (1 + Yek)。
因子和:
等比數列求和公式 ,推導可得上式。
【代碼化】
//分解質因數
void init(ll k)
{
int num=0;
for(ll i=2;i*i<=k;i++){
if(k%i==0) fac[num++]=i;
while(k%i==0) k/=i;
}
if(k>1) fac[num++]=k;
}
//求因子數
int cou(int n){
int s=1;
for(int i=2;i*i<=n;i++){
if(n%i==0){
int a=0;
while(n%i==0){
n/=i;
a++;
}
s=s*(a+1);
}
}
if(n>1) s=s*2;
return s;
}
//求因子和
int sum(int n){
int s=1;
for(int i=2;i*i<=n;i++){
if(n%i==0){
int a=1;
while(n%i==0){
n/=i;
a*=i;
}
s=s*(a*i-1)/(i-1);
}
}
if(n>1) s=s*(1+n);
return s;
}