欧拉定理

欧拉函数:

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

性质:

实现:

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

#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′)=(p1−1)×φ(n′)

欧拉定理:

欧拉定理 0 (Euler′stheorem) 内容:若 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)