对于一个数论函数(f),当(gcd(a,b)=1)时,(f(ab)=f(a)f(b)),则称其为积性函数
对于一个数论函数(f),若 (f(ab)=f(a)f(b)),则称其为完全积性函数
线性筛流程:
① 处理素数(p)
② 处理(i imes p) ,其中(i)是任意正整数,(p mid i) ,(p) 是素数,(p)是(i imes p)的最小素因子
③ 处理(i imes p),其中(i)是任意正整数,(p mid i),(p)是素数,(p)是(i)的最小素因子,(p)是(i imes p)的最小素因子
应用举例:
欧拉函数(φ(x))表示([1, x])里的所有整数中,与(x)互质的数的个数
(φ(p)=p-1)((p)为素数)
(φ(n)=nPi frac{p_i-1}{p_i})
① (φ(p)=p-1)
② (φ(i imes p)=φ(i) imes φ(p)=φ(i) imes (p-1))
③ (φ(i imes p)=npPi frac{p_i-1}{p_i}=p imes φ(i))
(code:)
phi[1]=1;
for(ll i=2;i<=n;++i)
{
if(!tag[i])
{
pri[++tot]=i;
phi[i]=i-1;
}
for(ll j=1;j<=tot;++j)
{
ll k=i*pri[j];
if(k>n) break;
tag[k]=true;
if(i%pri[j]!=0)
phi[k]=phi[i]*phi[pri[j]];
else
{
phi[k]=phi[i]*pri[j];
break;
}
}
}