코테/백준

[백준/JAVA] 11689번: GCD(n, k) = 1

imname1am 2023. 4. 26. 11:08
반응형

🔺 문제

 

11689번: GCD(n, k) = 1

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

www.acmicpc.net

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.*;
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++) { // 2~N의 제곱근까지 탐색
            // p가 소인수라면 결과값 업데이트
            if(N % p == 0) {
                result = result - result / p;   // P[i] = P[i] - P[i] / K
                
                while(N % p == 0) {
                    N /= p;
                }           
            }
        }
        
        // N이 1보다 클 때, N은 마지막 소인수를 나타냄
        if(N > 1) {
            result = result - result / N;
        }
        System.out.println(result);
    }
}
cs
 
✅ 해결 아이디어
오일러 피 함수

- 소인수 : 자연수의 약수 中 소수인 수 (참고)

- 서로소 : 최대공약수가 1인 두 자연수 - 2와 3, 9와 10 등 (참고)

 


🔺 다른 풀이들

 

[BOJ] 백준 11689번 GCD(n,k) = 1 (Java)

#11689 GCD(n,k) = 1 난이도 : 골드 1 유형 : 정수론 / Euler's phi function(오일러 파이 함수) 11689번: GCD(n, k) = 1 자연수 n이 주어졌을 때, GCD(n, k) = 1을 만족하는 자연수 1 ≤ k ≤ n 의 개수를 구하는 프로그램

loosie.tistory.com

 


💬 느낀 점

끄앙 어려워...

그냥 이런게 있구나 하고만 넘어갈게요ㅠ

 

 

1회독 2회독 3회독 4회독 5회독
V 6/20      

 

반응형