소인수 분해
정수 N을 소수의 곱으로 분해. 소수를 안구해도 됨. N을 소인수 분해 했을 때 인수 중에서 가장 큰 값은 루트N이다.
따라서 2~루트N까지 for문을 돌면서, N을 나눌 수 있을 때까지 계속 나누면된다.
int N;
cin>>N;
int divider = 2;
for (int i = 2; i*i<=N; i++) {
while(N % i == 0) {
cout<<i<<" ";
N /= i;
}
}
if(N > 1) {
cout<<N;
}
Last updated
Was this helpful?