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