반응형
🔺 문제
🔺 코드
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)
아예 while 루프의 조건식을 n이 1이 될 때까지 반복하고 그 안에서 i가 n의 약수인지 조건문 돌림. (i는 2에서 시작)
i가 n의 약수라면 n /= i
하고, i 출력하고, 아니면 i++
되게 하심....
- 풀이2)
위랑 거의 비슷한데 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 |