모두CBT

22-3아래 C 프로그램이 출력하는 값을 적으시오.#include &l… | 2022년 정보처리기사실기 3회차 기출문제 상세 페이지

13

22-3

아래 C 프로그램이 출력하는 값을 적으시오.

#include <stdio.h>

int main(void) {
    int n = 2, found = 0;
    while (n <= 500) {
        int sum = 0;
        for (int d = 1; d <= n / 2; d++)
            if (n % d == 0)
                sum += d;
        if (sum == n)
            found++;
        n++;
    }
    printf("%d", found);
    return 0;
}
해설

3


[해설]

안쪽 for는 n의 약수 중 n 자신을 뺀 것(1 ~ n/2)을 모두 더한다. 그 합이 n과 같으면 found를 늘리므로, 2~500 사이의 완전수 개수를 세는 코드다.

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

다음 완전수 8128은 범위를 벗어나므로 출력은 3이다.

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