C++ アルゴリズムとデータ構造のライブラリ
#include "library/number/prime/euler_phi.hpp"互いに素な個数 $\phi (N)$ を求める$O(\sqrt{N})$
long long ans = euler_phi(N);
#pragma once
template <typename T> T euler_phi(T n) {
T ret = n;
for (T i = 2; i * i <= n; ++i) {
if (n % i == 0) {
ret -= ret / i;
while (n % i == 0) n /= i;
}
}
if (n > 1) ret -= ret / n;
return ret;
}#line 2 "library/number/prime/euler_phi.hpp"
template <typename T> T euler_phi(T n) {
T ret = n;
for (T i = 2; i * i <= n; ++i) {
if (n % i == 0) {
ret -= ret / i;
while (n % i == 0) n /= i;
}
}
if (n > 1) ret -= ret / n;
return ret;
}