정보처리기사 실기 - 2023년 3회 C언어 기출 풀이(완전수 판별 & 합 문제)

Alchemist·2025년 9월 20일

정보처리기사

목록 보기
26/114

✨ 문제

다음은 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;
}

🎯 출제 의도

  • 약수의 합을 이용한 완전수(perfect number) 판별 원리 확인
  • 보조 함수 test()를 호출하여 조건을 만족하는 수만 누적하는 방식 이해
  • 반복문과 조건문을 결합하여 결과 도출

📘 개념 정리

1. 완전수 (Perfect Number)

  • 정의: 자기 자신을 제외한 약수의 합이 자기 자신과 같은 수
  • 예:
    • 6 = 1 + 2 + 3
    • 28 = 1 + 2 + 4 + 7 + 14

2. test 함수

for (i = 1; i <= n/2; i++){
    if (n % i == 0)
        sum += i;
}
if (n == sum) return 1;
  • 1부터 n/2까지 나누어떨어지는 수를 모두 합산 → 약수 합 sum
  • sum == n이면 완전수 → 1 반환

3. main 함수

for (i = 2; i <= 100; i++){
    if (test(i)) sum += i;
}
  • 2 ~ 100 사이 모든 수에 대해 test() 실행
  • 완전수라면 누적

📝 풀이 과정

  • 2부터 100 사이의 완전수 찾기

  • 6, 28

sum = 6 + 28 = 34


✅ 최종 출력 결과

34

💡 정리

이 문제에서 꼭 알아야 할 개념:

  • 완전수는 약수 합이 자기 자신과 같은 수
  • n/2까지만 검사하면 충분 (자기 자신 제외)
  • 2 ~ 100 사이 완전수는 6, 28 → 결과 합 = 34
profile
html_programming_language

0개의 댓글