欧拉函数

来源:互联网 发布:莆田云计算机房 编辑:程序博客网 时间:2024/06/16 02:45

关于欧拉函数有如下几点性质:
1、phi(1) = 1
2、若n是质数,那么phi(n) = n-1
3、若n是质数x的k次幂,phi(n) = (x-1)*x^(k-1)
4、若m,n互质,那么phi(m*n) = phi(m)*phi(n)
5、若n是奇数,那么phi(2*n) = phi(n)
6、若x,y是质数,且n = x*y,那么phi(n) = (x-1)*(y-1)
6、小于n且与n互质的数的和为:n/2 * phi(n)
其中第4条性质是因为欧拉函数是积性函数,莫比乌斯函数也是一个积性函数
性质1:
写成
这里写图片描述
可推出
这里写图片描述
感觉可能也用不太到
HDU:2824
最简单的模板题
hdu2824

#include <cstdio>  #include <cstring>  const int MAXN = 3e6+5;  __int64 phi[MAXN];  void PhiTable(int n)  {      for(int i=2; i<=n; ++i)          phi[i] = 0;      phi[1] = 1;      for(int i=2; i<=n; ++i) if((!phi[i]))          for(int j=i; j<=n; j+=i)          {              if(!phi[j]) phi[j] = j;              phi[j] = phi[j]/i * (i-1);          }  }  int main()  {      int a, b;      PhiTable(3e6);      while(~scanf("%d%d", &a, &b))      {          __int64 ans = 0;          for(int i=a; i<=b; ++i)  // 累加答案             ans += phi[i];          printf("%I64d\n", ans);      }      return 0;  }  

hdu2588
欧拉函数积性函数
hdu2837
欧拉函数快速幂
欧拉函数
欧拉函数

原创粉丝点击