다음은 C 언어 코드이다. 알맞는 출력 결과를 작성하시오.
#include <stdio.h>
int test(int n) {
int i, sum = 0;
for (i = 1; i <= n / 2; i++){
if (n % i == 0)
sum += i;
}
if (n == sum)
return 1;
return 0;
}
int main(){
int i, sum=0;
for (i = 2; i <= 100; i++){
if (test(i))
sum += i;
}
printf("%d ", sum);
return 0;
}
for (i = 1; i <= n/2; i++){
if (n % i == 0)
sum += i;
}
if (n == sum) return 1;
1부터 n/2까지 나누어떨어지는 수를 모두 합산 → 약수 합 sumsum == n이면 완전수 → 1 반환for (i = 2; i <= 100; i++){
if (test(i)) sum += i;
}
test() 실행2부터 100 사이의 완전수 찾기
6, 28
sum = 6 + 28 = 34
34
이 문제에서 꼭 알아야 할 개념:
n/2까지만 검사하면 충분 (자기 자신 제외)6, 28 → 결과 합 = 34