코테/백준
11653번 소인수분해
jhss9747
2025. 2. 10. 13:49
https://www.acmicpc.net/problem/11653
문제
정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
출력
N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.
풀이
간단한 소인수분해 문제이다.
처음에는 for문을 써서 반복을 하려고 했지만 그렇게 하기엔 n의 범위가 정해져있지도 않고 랜덤하기에
while문을 이용해서 n의 값이 1이 되면 멈추게 만들었다.
- 정수 n을 입력받고, n을 나눌 값 i를 2로 초기화 해준다.
- while문으로 n이 1이 아니면 반복시킨다. (더이상 나눌값이 없다면 멈춤)
- n을 i로 나눈 나머지가 0이라면
- i를 출력한다.
- n의 값을 n/i 로 설정한다.
- i의 값을 2로 재설정한다.
- 나머지가 0이 아니라면 i의 값을 증가시킨다.
- 더이상 나눌 값이 없으면 n이 1이 되므로 반복문은 종료된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int i = 2;
while(n != 1){
if (n % i == 0) {
System.out.println(i);
n /= i;
i = 2;
}else {
i++;
}
}
}
}