• 欧拉函数


    欧拉函数:

    定义:用于计算 p(n),比n小的所有与n互质的数。

    计算公式:p(n)=n*(1-1/p1)*(1-1/p2)....*(1-1/pk)【p1,p2,pk都是n的素因子】

    另:若n=p1^q1*p2^q2*.....*pk^qk

    则,p(n)=(p1-1)*p1^(q1-1)*(p1-1)*p2^(q2-1)......*(pk-1)*pk^(qk-1)

    int euler(int n)//返回euler(n)
    {
         int i;
         int res = n,a = n;
         for(i = 2;i*i <= a; ++i)
         {
             if(a%i == 0)
             {
                 res -= res/i; //p(n) = (p - p/p1)(1 - 1/p2)......
                 a/=i;
             }
         }
         if(a > 1) res -= res/a;//存在大于sqrt(a)的质因子
         return res;
    }
    时间复杂度为根号n

    性质:若m,n互质,φ(mn)=φ(m)φ(n)。当n为奇数时,φ(2n)=φ(n)

    fai(10)=4...1,3,7,9;fai(5)=4...1,2,3,4;

    欧拉定理:

    a,m互质,a^φ(m)≡1(mod m)

    例:2,3互质,那么,2^2%3=1

    推论:对于互质的数a、n,满足a^(φ(n)+1) ≡ a (mod n)

     欧拉公式的延伸:小于n 与n互质的数的和 是euler(n)*n/2(小数,如5/2=2.5);

  • 相关阅读:
    模板
    模板
    模板
    模板
    2017-2018 ACM-ICPC Asia Tsukuba Regional Contest
    牛客
    软件工程
    Codeforces Round 696(Div.2)
    Atcoder ARC111 contest
    Codeforces Educational Round 100(Div.2)
  • 原文地址:https://www.cnblogs.com/larvie/p/9528347.html
Copyright © 2020-2023  润新知