반응형
정수를 입력하면 소인수분해 하는 프로그램을 작성하면 되는 아주 간단한... 수학을 놓은지 어언.. 몇 년이냐..
소인수분해 듣기는 했는데 정의가 정확하게 뭐였는지 까먹었당.. 그래서 구선생에게 물어보았다.
아하! 어떤 수를 소수들의 곱으로 나타내게 쪼개고 쪼개는 뭐 그런 작업이었다.
이것을 중학생 때? 배웠던가 아무튼 어렴풋한 기억이 있는데 암산으로 마구 코딩을 하기전에 먼저 손으로 소인수분해를 해보고 코드를 작성해보았다.
입력한 정수가 12 라면 우리는 소인수분해를 이렇게 할 것이다.
만약 72를 입력한다면?
소인수분해 정의도 기억이 잘 안 났지만 손으로 해보니 아주 자유자재로 써진다. 글씨체도 자유자재
아무튼 위에 풀이를 토대로 코드를 작성해본다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import java.util.Scanner;
public class Main {
//baekjoon 11653 소인수분해 수학2
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int i = 2;
while(true) {
if(n == 1)
break;
if(n % i == 0) {
n /= i;
System.out.println(i);
} else {
i++;
}
}
}
}
|
cs |
아주 간단한 코드가 되었다.
10행 : 어떤 수든 2부터 나눠지는지 판별할 것이므로 나누는 수는 2로 초기화 한다.
11, 12행 : 정수 N을 계속 나누고 나누고 더 이상 나눌수 없을 때 (몫이 1이 될 때) while문을 나간다.
14행 : N을 i(최초 2)로 나누고 나눠 떨어지면 N을 i로 나눈 몫으로 바꾸고(15행 n /= i;)
i를 출력한다.
17, 18행 : 만약 N이 i로 나눠지지 않으면 (최초 2) i값을 1 높여서 검사해본다.
후~
반응형
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
백준 4948번 자바 베르트랑 공준 [기본수학2] 에라토스테네스의 체 (0) | 2021.05.04 |
---|---|
백준 1929번 자바 JAVA 소수 구하기 [기본수학2] (0) | 2021.04.29 |
백준 2581번 자바 소수 [기본 수학2] 에라토스테네스의 체 (0) | 2021.04.26 |
백준 1978번 자바 소수 찾기 [수학2] (0) | 2021.04.23 |
백준 1011번 JAVA Fly me to the Alpha Centauri 수학[1] (0) | 2021.04.22 |
댓글