백준 9506 c++
#include <iostream>
using namespace std;
void input(int arr[]);
void check_arr(int arr[]);
int main(void)
{
int* arr = new int[100000] {};
input(arr);
check_arr(arr);
delete[] arr;
return 0;
}
void input(int arr[])
{
int A, i = 0;
while (i <= 100000)
{
cin >> A;
if (A == -1)
{
break;
}
else if (A > 2 && A < 100000)
{
arr[i] = A;
}
else
{
i--;
}
i++;
}
return;
}
void check_arr(int arr[])
{
int i, j, k, total, N;
int temp[100] = {};
bool check = 0;
for (i = 0; i < 100000; i++)
{
N = arr[i];
if (N == 0)
{
break;
}
else
{
total = 0;
k = 0;
for (j = 1; j < N; j++)
{
if (N % j == 0)
{
total = total + j;
if (total > N)
{
check = 0;
break;
}
else if (total == N)
{
check = 1;
}
else
{
check = 0;
}
temp[k] = j;
k++;
}
else
{
;
}
}
if (check == 1)
{
cout << N << " = ";
for (j = 0; j < k - 1; j++)
{
cout << temp[j] << " + ";
}
cout << temp[j] << endl;
}
else
{
cout << N << " is NOT perfect." << endl;
}
}
}
return;
}