package k20231206;

import java.util.Iterator;
import java.util.Scanner;
public class SooinsooTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("소인수분해할 숫자를 입력하세요: ");
int n = scanner.nextInt();
// 입력받은 수가 2 미만이면 무한루프를 탈출한다/
if (n<2) {
break;
}
// 소인수 분해
int[] s = new int[20];
int number = n;
int c = 0; // s배열의 인덱스, 소인수의 개수
while (true) {
int k = 2; //소인수 분해를 시작하는 숫자 초기화
while (true) {
int r = n % k;
if ( r==0 ) { //소인수 분해가 되었는가?
break;
}
// 소인수 분해가 되지 않았다면 k를 1증가시킨다
k++;
}
// 소인수 분해가 되었으면 s배열에 소인수를 저장한다.
s[c++]=k;
// 다음 소인수를 얻기 위해 n에 n을 k로 나눈 몫을 저장한다.
n/=k;
if (n==1) { //소인수 분해가 끝났는가
break;
}
}
// n이 소수면 소수라고 출력, 아니면 분해된 소인수를 출력한다.
// 소인수의 개수(c)가 1개라면 소수이다.
if (c==1) { // n이 소수인가
System.out.println(number + "는(은) 소수입니다");
} else { //소인수를 출력한다
System.out.print(number + " = ");
for (int y = 0; y<c-1; y++) {
System.out.print(s[y] + " * ");
}
System.out.println(s[c-1]);
}
}
System.out.println("프로그램 종료");
}
}
'java&eclipse 코딩 알고리즘 > 20231206' 카테고리의 다른 글
| StringMethodTest (0) | 2023.12.14 |
|---|---|
| SosooTest (0) | 2023.12.14 |
| ClassIncludeTest (0) | 2023.12.14 |
| DateTimeTest2 (0) | 2023.12.14 |
| DateTimeTest (0) | 2023.12.14 |