모두CBT

23-3아래 C 프로그램의 실행 결과를 적으시오.#include &lt… | 2023년 정보처리기사실기 3회차 기출문제 상세 페이지

18

23-3

아래 C 프로그램의 실행 결과를 적으시오.

#include <stdio.h>

int divisor_sum(int x) {
    int s = 0;
    for (int d = 1; d < x; d++)
        if (x % d == 0)
            s += d;
    return s;
}

int main(void) {
    int total = 0, cnt = 0;
    for (int v = 500; v >= 2; v--) {
        if (divisor_sum(v) == v) {
            total += v;
            cnt++;
        }
    }
    printf("%d %d", cnt, total);
    return 0;
}
해설

3 530


[해설]

divisor_sum은 자기 자신을 뺀 약수(진약수)의 합을 돌려주므로, main은 진약수의 합이 자신과 같은 완전수를 500에서 2까지 찾는다.

  • 6 = 1+2+3
  • 28 = 1+2+4+7+14
  • 496 = 1+2+4+8+16+31+62+124+248

500 이하 완전수는 이 셋뿐이고, 거꾸로 세어도 개수와 합은 같다.
cnt = 3, total = 6+28+496 = 530
출력 = 3 530

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.