• 欧拉函数


    1~n中与n互质的数被称为欧拉函数。

    怎么求欧拉函数呢 只要拿n减去与n不互质的数的个数就可以了

    φ(n)=n*质数p|n(1-1/p)

    欧拉函数的性质

    1.任意n>1,1~n中与n互质的数之和为φ(n)*n/2

    证明:gcd(n,x)=gcd(n,n-x) 所以与n互质的数x,n-x是成对出现的 两个数的平均值为n/2

    2.若a,b互质,则φ(ab)=φ(a)φ(b)

    3.若f是积性函数,且在算数基本定理中n=∏(pici) i=1~m,则f(n)=∏f(pici) i=1~m

    积性函数:如果当a,b互质时,有f(ab)=f(a)*f(b),则称函数f为积性函数

    4.若p|n且p2|n,则φ(n)=φ(n/p)*p

    证明:由给定条件可知 n与n/p有相同的质因子只是p的指数不同

         按欧拉函数的计算公式写出来φ(n)/φ(n/p) 就是p

    5.若p|n且p2不能被n整除,则φ(n)=φ(n/p)*φ(p)

    证明:p与n/p互质 所以φ(n)=φ(n/p)*φ(p)

          若p为质数 φ(p)=p-1 即φ(n)=φ(n/p)*φ(p) φ(n)=φ(n/p)*(p-1)

     

    板子题

    [SDOI2008]仪仗队

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #define Rg register
    #define go(i,a,b) for(Rg int i=a;i<=b;i++)
    using namespace std;
    int n,ans,phi[40010];
    int el()
    {
        go(i,1,n)phi[i]=i;
        go(i,2,n)
            if(phi[i]==i)
                go(j,1,n/i)
                    phi[i*j]=phi[i*j]/i*(i-1);
    }
    int main()
    {
        scanf("%d",&n);
        if(n==1){printf("0");return 0;}
        el();n--;
        go(i,2,n)ans+=phi[i]*2;
        printf("%d",ans+3);
        return 0;
    }
    View Code
    光伴随的阴影
  • 相关阅读:
    TeamViewer的替代品:realVNC
    Introduction of Generator in Python
    Excel: assign label to scatter chart using specific cell values
    reverse/inverse a mapping but with multiple values for each key
    虚拟化与云计算
    现代计算机简介
    CentOS 7 安装中网络设置111
    机械硬盘原理
    文件系统
    最重要的块设备——硬盘
  • 原文地址:https://www.cnblogs.com/forward777/p/10500861.html
Copyright © 2020-2023  润新知