https://www.acmicpc.net/problem/9506
#include <bits/stdc++.h>
using namespace std;
int main(){
while(1) {
int n = 0;
cin >> n;
vector<int> divisor;
int sum = 0;
if(n == -1) break;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
divisor.push_back(i);
sum += i;
}
}
if (sum == n) {
cout << n << " = ";
for (int i = 0; i < divisor.size() - 1; i++) {
cout << divisor[i] << " + ";
}
cout << divisor[divisor.size()-1] << '\n';
} else cout << n << " is NOT perfect." << '\n';
}
return 0;
}
while
문 선언vector
만들기sum
선언 및 초기화n
의 약수를 divisor
vector에 담고, 약수의 합도 구한다.sum
이 n
과 같으면 완전수이기 때문에 형식에 맞게 출력is NOT perfect.
출력.