🔺 문제
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하게 하심.
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 9063번: 대지 (0) | 2023.03.29 |
---|---|
[백준/JAVA] 1085번: 직사각형에서 탈출 (0) | 2023.03.29 |
[백준/JAVA] 2581번: 소수 (0) | 2023.03.28 |
[백준/JAVA] 9506번: 약수들의 합 (0) | 2023.03.28 |
[백준/JAVA] 1978번: 소수 찾기 (0) | 2023.03.28 |