정보처리기사 / 정보처리산업기사 실기시험 알고리즘의
Section012 - 소인수 분해하기
입력받은 수(B)를 소인수 분해 하기 위해서는,
2부터 B의 제곱근 까지 나누어 떨어지는가를 확인 해야 합니다.
결과 값에 출력된 결과를 보며 로직을 이해 하세요!
Section012.java
public class Section012 { public static void main(String[] args) { int[] A = new int[100]; int B = 20; int C = 0; // 배열 내 소인수 저장 위치 int D = 2; // 제수 저장 변수(피제수를 2부터 나눔) int E; // 입력 받은 수(B)의 제곱근이 저장될 변수 int MOK = 0; int NMG = 0; int i; while (true) { E = (int) Math.sqrt(B); // B의 제곱근을 E에 저장 System.out.println("입력 받은 수 = " + B + ", 제곱근 E=" + E); while (true) { System.out.println("제수 D=" + D + ", 제곱근 E=" + E); if (D > E) { // 제수(D)가 피제수 제곱근(E) 보다 크면 소인수 D = B; System.out.println("break:" + D); break; } else { MOK = B / D; NMG = B - MOK * D; System.out.println(B + "/" + D + " NMG=" + NMG); if (NMG != 0) { D = D + 1; continue; } else break; } } System.out.println("소수 = " + D); A[C] = D; C = C + 1; // 배열의 위치 증가 if (B == D) { System.out.println("End....."); for (i = 0; i < C; i++) System.out.print(A[i] + " "); System.out.println(""); break; } else { B = MOK; continue; } } } }
결과 값
입력 받은 수 = 20, 제곱근 E=4 제수 D=2, 제곱근 E=4 20/2 NMG=0 소수 = 2 입력 받은 수 = 10, 제곱근 E=3 제수 D=2, 제곱근 E=3 10/2 NMG=0 소수 = 2 입력 받은 수 = 5, 제곱근 E=2 제수 D=2, 제곱근 E=2 5/2 NMG=1 제수 D=3, 제곱근 E=2 break:5 소수 = 5 End..... 2 2 5
'Programming > Algorithm' 카테고리의 다른 글
[자바/알고리즘]알고리즘 버블정렬 (0) | 2020.08.26 |
---|---|
[자바/알고리즘]알고리즘 선택정렬 (0) | 2020.08.24 |
[자바/알고리즘]정보처리기사 Section011 - 약수 구하기 (0) | 2016.02.11 |
[자바/알고리즘]정보처리기사 Section008 - 소수의 합 구하기 (0) | 2016.02.11 |
[자바/알고리즘]정보처리기사 Section007 - 소수 판별 (0) | 2016.02.11 |