欧拉函数模板

来源:互联网 发布:yy头像制作软件 编辑:程序博客网 时间:2024/05/21 19:23

欧拉函数:在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。
欧拉函数公式:ϕ(n)=n(11p),其中p是可以整除n的素数
根据公式,写出如下程序:
求单个数的欧拉函数:

int euler_phi(int n)  {      int res = n;      int m = (int)sqrt(n);      for(int i = 2; i <= m; i++)          if(n % i == 0)          {              res = res / i * (i-1);              while(n % i == 0) n /= i;          }      if(n > 1) res = res / n * (n-1);      return res;  }

筛选法求欧拉函数

void euler_phi()  {      for(int i = 1; i < N; i++) phi[i] = i;      for(int i = 2; i < N; i++)          if(phi[i] == i) //成立说明i是素数            for(int j = i; j < N; j += i) //j要从i开始,这样可以处理素数的情况                  phi[j] = phi[j] / i * (i-1);  }  
0 0
原创粉丝点击