출처 : https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
고려사항
- 나누는 수를 2부터 시작해서 나눈 결과가 0이면 출력한다.
- 나머지가 0이 아니면 d를 1씩 증가하며 반복하고, num 이 1일 때 완료한다.
- 작은 소수부터 나눗셈을 하게 되는 방식이라, 증가된 d가 4와 같이 소수가 아닐 시에는
이미 4의 약수인 2로 나눗셈을 진행했었기 때문에 나눠지는 일이 없기 때문에 다시 d를 증가시키게 된다.
#include <iostream> using namespace std; int main() { int num, d = 2; cin>>num; while(num != 1){ if(num % d == 0){ cout<<d<<"\n"; num /= d; }else{ ++d; } } return 0; }