#include <string>
#include <vector>
#include <iostream>
#include <Windows.h>
#include <algorithm>
#include <cmath>
using namespace std;
void factor(int inputNum, vector<int>& vec) {
vec.clear();
if (inputNum <= 0) {
return;
}
//변수로 따로 저장하지 않은 경우엔 for문의 매 반복마다 sqrt() 함수를 호출함으로 cpu 리소스를 낭비하게 된다.
int squareRoot = sqrt(inputNum);
//i가 1부터 시작 => 1과 자신 포함
//i가 2부터 시작 => 1과 자신 미포함
for (int i = 2; i <= squareRoot; i++)
{
if (inputNum % i != 0) continue;
vec.push_back(i);
//제곱근인 경우 같은 수가 두번 삽입되므로 예외처리로서 방지한다.
if (i * i == inputNum) continue;
vec.push_back(inputNum / i);
}
sort(vec.begin(), vec.end());
}
int main()
{
int a = 1;
vector<int> vec;
while (a != 0)
{
system("cls");
cout << "수 입력: ";
cin >> a;
factor(a, vec);
for (int num : vec)
{
cout << num << endl;
}
Sleep(3000);
}
return EXIT_SUCCESS;
}