정수 N
이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)
이 주어진다.
N
의 소인수분해 결과를 한 줄에 하나씩 오름차순
으로 출력한다.
N
이 1
인 경우 아무것도 출력하지 않는다.
72
2
2
2
3
3
3
3
6
2
3
2
2
9991
97
103
-문제의 오타를 찾은 사람: BaaaaaaaaaaarkingDog, Green55
-문제를 만든 사람: baekjoon
-잘못된 조건을 찾은 사람: wjdclgns12
import java.util.Scanner;
public class Code11653 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int N=scanner.nextInt();
int i=2;
if(N!=1) { //N is not 1
while(N>=i) {
if(N%i==0) {
System.out.println(i);
N=N/i;
i=2;
}
else {
i++;
}
}
}
}
}
이 문제랑 비슷한 문제였다.
i
를 2로 두고, N
을 i
로 나누면서 점점 i
의 크기를 키워나갔다.
2,3,5,7 순으로 나뉜다. 왜냐하면 4는 2가 이미 나눴을 것이고,
6도 이미 2와 3이 나누기 때문에 자동으로 소인수분해가 된다.
약수, 배수와 소수도 끝냈다!