欧拉函数(Euler)
对正整数 n,欧拉函数是小于等于 n 的正整数中与 n 互质的数的数目
- 求出 n 的素因子集合
核心代码
export function phi(n: number) {
let ans = n;
for (let i = 2; i ** 2 <= n; i++) {
// 求出n的素因子
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;
}