欧拉函数模板

来源:互联网 发布:泰拉瑞亚骸骨魔弓数据 编辑:程序博客网 时间:2024/05/22 01:33

在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler'so totient function),它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。

通式:
其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。
注意:每种质因数只一个。 比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4
若n是质数p的k次幂,
,因为除了p的倍数外,其他数都跟n互质。
设n为正整数,以 φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值
φ:N→N,n→φ(n)称为欧拉函数。
欧拉函数是积性函数——若m,n互质,
特殊性质:当n为奇数时,
, 证明与上述类似。
若n为质数则


下面是模板:

欧拉函数 int Eular(int n)  {      int ans=1;      for (int i=2;i<=sqrt((double)n);i++)      {          if (n%i==0)          {              n/=i;              ans*=(i-1);              //若n有个因子是i的k次,根据欧拉公式有下面的代码              while (n%i==0)               {                  n/=i;                  ans*=i;              }          }      }      if (n>1)     //若最后剩的数为大于5的素数,根据欧拉公式再算进去           ans*=(n-1);      return ans;  }  








原创粉丝点击