23-3아래 C 프로그램의 실행 결과를 적으시오.#include <… | 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
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.