欧拉函数随笔

  • 定义

  在数论中,对正整数n,欧拉函数phi(n)是小于等于n的正整数中与n互质的数的数目。

  • 通式

  phi(x)=x(1-1/p1)(1-1/p2)...(1-1/pn),其中,p1,p2...pn为n的质因数。

  证明:

  将n表示成素数的乘积形式: n=p1^k1*p2^k2...pn^kn,

  可得,phi(n)=(p1^k1-p1^(k1-1))...*(pn^kn-pn^(kn-1))

  next,phi(n)=n(1-1/p1)(1-1/p2)..(1-1/pn),其中,p1,p2..pn均为素数。

  其中,当n=p^k时,1到n中p的倍数与n并不互素,这样的数有n/p个。

  • 性质(递推关系)(p为n的质因数)

  若n%p==0 && (n/p)%p==0,则phi(n)=phi(n/p)*p;

  若n%p==0 && (n/p)%p!=0,则phi(n)=phi(n/p)*(p-1);

  • 算法实现
  •  1 int p[MAXN],phi[MAXN];
     2 
     3 void solve(int N)
     4 {
     5     for(int i=1; i<=N; i++)
     6     {
     7         p[i] = 1; // 1 for prime number
     8         phi[i] = i;
     9     }
    10    p[1] = 0;
    11     for(int i=1; i<=N; i++)
    12     {
    13         if(p[i])
    14         {
    15             for(int j=2*i; j<=N; j+=i)
    16                 p[j] = 0;
    17         }
    18     }
    19     for(int i=2; i<=N; i++)
    20     {
    21         if(p[i])
    22             for(int j=i; j<=N; j+=i)
    23                 phi[j] = phi[j]/i*(i-1);
    24     }
    25 }

     

  •  应用

  欧拉函数的主要应用是欧拉定理以及运用ploya定理时对指数循环节进行优化,有待补充。

 

    

 

posted @ 2015-06-15 16:01  流浪集  阅读(130)  评论(0编辑  收藏  举报