본문 바로가기

알고리즘/백준

[백준] 11653 - 소인수분해 (JAVA/ 자바)

반응형

11653번 문제(1)
11653번 문제(2)

 

1.Scanner를 이용한 방법

import java.util.Scanner;

public class Main{
public static void main(String[] args){

    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();

    for(int i=2; i<=N; i++){
        while(N % i == 0){
            N /= i;
            System.out.println(i);
        }
        if(N == 1){
            break;
        }
    }
    sc.close();
    }
}

 

2. BufferedReader를 이용한 방법

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

public class Main{
public static void main(String[] args)throws IOException{

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    int N = Integer.parseInt(br.readLine());

    for(int i=2; i<=N; i++){
        while(N % i == 0){
            N /= i;
            System.out.println(i);
        }
        if(N == 1){
            break;
        }
    }
    br.close();
    }
}

소수를 구할 때와 다르게 소인수분해는 N % i == 0일 경우에 해당되므로 N % i == 0 일 때 반복해서 나눠주면 된다.

반응형