欧拉函数
求单个欧拉函数
φ(n)
表示1~n
中与n互质的数的个数。
其中:
- 为避免浮点数除法,编程时采用另一个形式编写代码
- 可用先除后乘的方式
res = res / n * (n-1)
避免结果溢出 - 例子:,因为~中只有和与互质
- 可用容斥原理证明:
- 时间复杂度
代码
int phi(int x)
{
int res = x;
for (int i = 2; i <= x / i; i ++ )
if (x % i == 0)
{
res = res / i * (i - 1);
while (x % i == 0) x /= i;
}
if (x > 1) res = res / x * (x - 1);
return res;
}
筛法求多个欧拉函数
- 核心思想:与的质指数大小无关
- 当是质数时,
- 当时,,因为质数只影响