본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 11653 소인수분해

by 까망 하르방 2022. 2. 22.
반응형

Approach

출처https://www.acmicpc.net/problem/11653

 

N = 72가 주어졌다고 했을 때

오름차순으로 출력되도록 소인수 분해하는 쉬운 방법은

2, 3, 5, 7, … 순으로 나누다가가 완전히 나누어 떨어질때 까지 반복하는 것이다.

 

• 72 / 2 = 36 → 36 / 2 = 18 → 18 / 2 = 9 ( 2로는 더 이상 나누어지지 않음)

    ▶ 「2」 를 세번 출력

• 9 / 3 = 3 → 3 / 3 = 1 ( 「3」으로는 더 이상 나누어지지 않음)

     「3」 을 두번 출력

 

C++

#include <iostream>

using namespace std;

int n;

int main()
{
    scanf("%d",&n);
    
    if (n == 1) return 0;
  
    int val = 2;
    while(n>1)
    {
        if(n % val == 0)
        {
            printf("%d\n",val);
            n/=val;
        }
        else
        {
            val++;
        }
    }
}

 

Java

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		
		int idx = 2;
		while(true) {
			if(n == 1) {
				break;
			}
			if(n % idx == 0) {
				System.out.println(idx);
				n = n / idx;
			}else {
				idx++;
			}
		}
	}
}
반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 4673 셀프 넘버  (0) 2022.02.25
[BOJ] 백준 11441 합 구하기  (0) 2022.02.23
[BOJ] 백준 2920 음계  (0) 2022.02.20
[BOJ] 백준 9020 골드바흐의 추측  (0) 2022.02.17
[BOJ] 백준 11866 요세푸스 문제0  (0) 2022.02.17

댓글