#include <stdio.h>
int main() {
// n = 입력 받는 수, s = 입력 받는 수가 완전수 인지 판단하는 변수
int n, s=0;
// 반복
while(1) {
// 값을 입력 받는다.
scanf("%d", &n);
// 입력 받은 값이 -1이면 탈출한다.
if(n == -1) break;
// 확인용 변수의 값을 0으로 초기화
s=0;
// 확인용 변수에 약수들을 더해준다.
for(int i=1; i<n; i++) if((n%i) == 0) s+=i;
// 완전수일 경우 (확인용 변수의 값이 입력받은 수와 같을 경우)
if(s == n) {
// 확인용 변수 출력
printf("%d = ", s);
// 반복
for(int i=1; i<n; i++) {
// 약수일 경우 출력
// 현재 반복이 마지막일 경우 정수만 출력 아닐경우 뒤에 "+" 문자를 붙여 출력한다.
if((n%i) == 0) printf(i != n-i ? "%d + " : "%d", i);
}
// 개열 문자열 출력
printf("\n");
}else{
// 완전수가 아닐경우 아래 문자열 출력.
printf("%d is NOT perfect.\n", n);
}
}
return 0;
}
이번 문제는 약수들을 어떻게 보여줄지가 중요한 문제였던 것 같다.