에라토스테네스의 체
를 활용함φ[i] = φ[i] - φ[i]/K
연산을 수행한다.(i는 K의 배수)
1개 아니면 0개
이다.// 오일러 파이 전체 배열을 구하는 것이 아닌 특정값에 대해 구하는 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long n = Long.parseLong(br.readLine());
long result = n;
for (long p = 2; p <= Math.sqrt(n); p++) { // 제곱근까지만 진행
if (n % p == 0) { // p가 소인수인지 확인
result = result - result / p; // 오일러 피 함수
while (n % p == 0) { // 해당 소인수를 지워줌 2^7*11이라면 2^7을 없애고 11만 남김
n /= p;
}
}
}
if (n > 1)
// 아직 소인수 구성이 남아있는 경우
//(반복문에서 제곱근까지만 탐색했기 때문에 1개의 소인수가 누락되는 케이스)
result = result - result / n;
System.out.println(result);
}
}