zoukankan      html  css  js  c++  java
  • ACM 第十九天

    积性函数

    积性函数线性筛,筛素数,u(n),欧拉函数:

    1 vis[0]=vis[1]=1,mu[1]=1,phi[1]=1;
    2 for (RG int i=2;i<=N;++i){
    3     if (!vis[i]) mu[i]=-1,phi[i]=i-1,prime[++cnt]=i;
    4     for (RG int j=1,k=i*prime[j];j<=cnt && k<=N;++j,k=i*prime[j]){
    5     vis[k]=1;
    6     if (!(i%prime[j])){ mu[k]=0,phi[k]=phi[i]*prime[j]; break; }
    7     else mu[k]=-mu[i],phi[k]=phi[i]*phi[prime[j]];
    8     }
    9 }

    可以发现,线性筛分为3部分:

    1.n本身是素数,这个根据积性函数的定义可得,很容易求。

    2.i%prime[j]!=0,这个也是根据积性函数的性质可得f(a)f(b)=f(a

    3.i%prime[j]==0,可能需要找规律。据ljh2000神犇的说法,可以用2,4,8或3,9,27这些数来找。

    μ(n),ϕ

  • 相关阅读:
    java练习6
    java练习5
    java练习4
    java练习3
    java练习2
    java练习1
    用代码实现判断字符串的开头和结尾
    语句练习题2
    语句练习题1
    值类型和引用类型的区别
  • 原文地址:https://www.cnblogs.com/weixq351/p/9528126.html
Copyright © 2011-2022 走看看