백준(C언어) 풀이/수학

백준(C) 11653번 소인수분해 풀이

개발윗미 2021. 9. 20. 19:46

C로 구현한 11653번 소인수분해 문제 풀이입니다.

 

https://www.acmicpc.net/problem/11653

 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net


#include <stdio.h>

int main() {
	int n;
	scanf("%d", &n);
	if(n == 1)
		return 0;
	int number = 2;
	while(n > 1) {
		if(n % number == 0) {
			printf("%d\n", number);
			n /= number;
		} else {
			number ++;
		}
	}
}

 

정수 n을 입력받고 그 값이 1인 경우 아무것도 출력하지 않도록 프로그램을 종료한다.

 

소인수분해는 기본적으로 2부터 진행하기 때문에 변수 number에 2를 할당한다.

 

while문을 통해 반복실행하고, 그 내부에서는 조건문을 통해 입력받은 n을 number 값으로 나눈 나머지 값이 0이라면

 

number 값을 출력한다. 또한, 변수 n에 number로 나눈 몫을 다시 갱신해준다.

 

현재의 number 값으로 나누어 떨어지지 않는다면 number 값을 1씩 증가시켜 반복적으로 수행한다.