This documentation is automatically generated by competitive-verifier/competitive-verifier
#include "math/number-theory/euler-phi.hpp"
正の整数 $n$ が与えられたとき, $1$ から $n$ までの自然数のうち $n$ と互いに素なものの個数 $\phi(n)$ を求める.
以下の式で効率的に求めることができる.
$\phi(n)=n\displaystyle\prod_{i=1}^k(1-\dfrac{1}{p_i})$ (ただし $p_i$ は $n$ の素因数)
euler_phi(n)
: $\phi(n)$ を返す./**
* @brief Euler's Phi(オイラーのφ関数)
*
*/
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 1 "math/number-theory/euler-phi.hpp"
/**
* @brief Euler's Phi(オイラーのφ関数)
*
*/
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;
}