[알고리즘]/백준

백준 11653 자바 - 소인수분해

broship 2021. 7. 10. 16:10

문제


 

 

 

문제해결


- 2부터 하나씩 나누는 방법

import java.util.Scanner;

public class B11653 {
    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){
                System.out.println(i);
                n /= i;
            }
        }
    }
}

- 하지만 반복문을 Math.sqrt(n) 까지만 돌고 마지막에 1이 아닐 경우 n을 출력하는 방법을 사용해도 된다

import java.util.Scanner;

public class B11653 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        for (int i = 2; i <= Math.sqrt(n); i++) {
            while (n%i == 0){
                System.out.println(i);
                n /= i;
            }
        }

        if (n != 1)
            System.out.println(n);
    }
}

출처: https://st-lab.tistory.com/152