This documentation is automatically generated by online-judge-tools/verification-helper
#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/6/NTL/1/NTL_1_D"
#include <iostream>
#include "C++/math/euler_phi.hpp"
int main() {
long n;
std::cin >> n;
std::cout << man::euler_phi(n) << '\n';
}
#line 1 "test/phi.test.cpp"
#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/library/6/NTL/1/NTL_1_D"
#include <iostream>
#line 2 "C++/math/euler_phi.hpp"
namespace man {
template <std::integral T> constexpr inline T euler_phi(T n) noexcept {
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;
}
}
/**
* @brief Euler's Phi-function
*/
#line 4 "test/phi.test.cpp"
int main() {
long n;
std::cin >> n;
std::cout << man::euler_phi(n) << '\n';
}