Peking University Online Judge 2407 Relatives
オイラーのΦ関数を返すだけ
なぜこの実装でΦ関数が実現できるかを理解することが重要ではないかと(お前誰だよ)
#include<cstdio> using namespace std; typedef long long int ll; ll euler_phi(ll n){ ll res = n; for(ll i = 2; i * i <= n; i++){ if(n % i == 0){ res = res / i * (i - 1); for(; n % i == 0; n /= i); } } if(n != 1) res = res / n * (n - 1); return res; } int main(){ ll n; for(;;){ scanf("%lld", &n); if(n == 0) break; printf("%lld\n", euler_phi(n)); } return 0; }