코테/백준

[백준/JAVA] 11653번: 소인수분해

imname1am 2023. 3. 28. 13:06
반응형

🔺 문제

 

11653번: 소인수분해

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

www.acmicpc.net

 

🔺 코드

 

[백준] 11653번 : 소인수분해 - JAVA [자바]

www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 문제 소인수 분해 문제다. 찾아보니 중학교 교과과정에서 배운다고 하니 아마 다들 쉽게

st-lab.tistory.com

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));

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

        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);
        }	
    }
}
✅ 해결 아이디어
- 반복문의 범위 : Math.sqrt(n)까지 반복
- n /= i로 나누고 남은 최종 n이 두 가지 케이스로 나뉨
└ n이 1이 아닌 상태로 남아있는 경우, n은 소수이자 인수이므로 따로 출력해줘야

혼자 고민해보다가... 오늘따라 머리가 안 돌아가 참고하여 작성한 코드...

 

끝~!~!


🔺 다른 풀이들

- 풀이1)

 

[백준] 11653번 : 소인수분해 – JAVA [자바]

https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 문제 문제 풀이 백준 11653번 소인수분해는 브론즈 1 난이도의 수학 문제이다. 이 문

propercoding.tistory.com

아예 while 루프의 조건식을 n이 1이 될 때까지 반복하고 그 안에서 i가 n의 약수인지 조건문 돌림. (i는 2에서 시작)

i가 n의 약수라면 n /= i 하고, i 출력하고, 아니면 i++되게 하심....

 

 

- 풀이2)

 

백준 11653번 JAVA 소인수분해 [기본 수학2]

정수를 입력하면 소인수분해 하는 프로그램을 작성하면 되는 아주 간단한... 수학을 놓은지 어언.. 몇 년이냐.. 소인수분해 듣기는 했는데 정의가 정확하게 뭐였는지 까먹었당.. 그래서 구선생에

hellodoor.tistory.com

위랑 거의 비슷한데 while문에서 while(true)하고 그 안에서 If(n == 1)이면 break하게 하심.

반응형