본문 바로가기
JAVA/백준

[Java] 백준 11689 GCD(n, k) = 1 - 오일러 피

by 푸_푸 2022. 11. 23.
728x90

백준 11689 GCD(n, k) = 1
문제

자연수 n이 주어졌을 때, GCD(n, k) = 1을 만족하는 자연수 1 ≤ k ≤ n 의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 n (1 ≤ n ≤ 1012)이 주어진다.

출력

GCD(n, k) = 1을 만족하는 자연수 1 ≤ k ≤ n 의 개수를 출력한다.


제출

import java.io.*;
public class Main {
	public static void main(String[] args) throws IOException{
		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) {
				result = result - result / p;
				while (n % p == 0) {
					n /= p;
				}
			}
		}
		if (n > 1)
			result = result - result / n;
		System.out.println(result);
	}
}

예제

1

 

5

 

10

 

45

 

99

결과

백준 11689 GCD(n, k) = 1

 

 

11689번: GCD(n, k) = 1

자연수 n이 주어졌을 때, GCD(n, k) = 1을 만족하는 자연수 1 ≤ k ≤ n 의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

728x90

댓글