欧拉定理

欧拉函数:

欧拉函数 (Eulerstotientfunction) 内容:即 φ(n),表示的是小于等于 nn 互质的数的个数。

性质:

实现:

只要求一个数的欧拉函数值:

#include <cmath>

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

如果是多个数的欧拉函数值: 详见:筛法求欧拉函数

有:

φ(n)=φ(p1)×φ(n)=(p11)×φ(n)

欧拉定理:

欧拉定理 0 (Eulerstheorem) 内容:若 gcd(a,m)=1,则 aφ(m)1(modm)

费马小定理可以看作当m 是质数 p 时欧拉定理的一个特殊情形。

扩展欧拉定理:

扩展欧拉定理内容:

ab{Abmodφ(m),gcd(a,m)=1,Ab,gcd(a,m)1,b<φ(m),A(bmodφ(m))+φ(m),gcd(a,m)1,bφ(m).(modm)