반응형
문제
이번에 다뤄볼 문제는 11653번 문제 '소인수분해'입니다.
소인수분해 문제에서는 크게 설명드릴만한 내용이 딱히 없습니다.
N을 소인수분해 했을때 나타날 수 있는 인수중 가장 큰 값은 루트N입니다.
따라서, 2부터 루트N까지 for문을 돌면서 N을 나눌 수 있다면 계속 나눠주면 됩니다.
아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다.
코드(C++)
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 2; i*i <= n; i++) {
while (n%i == 0) {
cout << i << endl;
n /= i;
}
}
if (n > 1) {
cout << n << endl;
}
return 0;
}
반응형
'algorithm' 카테고리의 다른 글
[C++] 백준 알고리즘 2581번 (소수) (0) | 2019.01.20 |
---|---|
[C++] 백준 알고리즘 1924번 (2007년) (0) | 2019.01.20 |
[C++] 백준 알고리즘 1929번 (소수 찾기) (0) | 2019.01.20 |
[C++] 백준 알고리즘 1978번 (소수 찾기) (0) | 2018.10.26 |
[C++] 백준 알고리즘 11005번 (진법 변환2) (0) | 2018.10.25 |