Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 30 31
Archives
Today
Total
관리 메뉴

전공공부

[BOJ_11653] 소인수 분해 본문

Study/Problem Solving

[BOJ_11653] 소인수 분해

monitor 2023. 9. 30. 17:27

설명


입력이 들어오면 그 숫자를 소인수 분해하면 된다.

 

출력 형태를 보니 재귀로 처리하면 쉽게 처리 할 수 있을 것으로 판단하여 재귀 형태로 짰고 모든 수를 탐색하여 소수를 찾아서 나눠도 되지만 제곱근 내에서만 탐색하면 해당 숫자 내부의 소수를 모두 찾아서 판단할 수 있어서 아래와 같이 코드를 짰다. 그리고, 마지막에 출력 추가 부분은 다 나누고 마지막에 남는 소수를 찾기 위해서 추가하였다.

 

마지막에 남은 수가 소수일 경우  제곱근으로 반복문 돌리는 방식은 자기 자신이 소수일때는 자기 자신의 수 내부에 존재하는 소수를 찾지 못하고 (소수는 1 아니면 자기 자신으로만 나누어진다.) 마지막에 남은 소수 바로 자신을 출력하면 된다.

코드


import java.io.BufferedReader;
import java.io.InputStreamReader;

public class BOJ_11653 {
    public static void main(String[] args) throws Exception{
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(in.readLine());
        if(N == 1){
            return;
        }
        int a = Make(N);
        System.out.println(a);
    }

    private static int Make(int n) {
        for(int i = 2; i <= Math.sqrt(n); i++){
            if(n % i == 0){
                System.out.println(i);
                n = Make(n/i);
                break;
            }
        }
        return n;
    }
}
 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net

 

'Study > Problem Solving' 카테고리의 다른 글

[BOJ_15651] N과 M (3)  (0) 2023.10.02
[BOJ_15650] N과 M (2)  (0) 2023.10.02
[BOJ_5618] 공약수  (0) 2023.09.20
[BOJ_2581] 소수  (0) 2023.09.19
[BOJ_17615] 볼 모으기  (0) 2023.09.10