되는대로 살자

[C언어 기출문제&풀이] 완전수 본문

2009~2014/C/C++

[C언어 기출문제&풀이] 완전수

malu 2010. 11. 2. 16:46

프로그램 명: perfect
제한시간: 1 초

완전수(perfect) , 부족수(deficient) , 과잉수(abundant) 를 출력하는 문제.

완전수란 자신을 제외한 약수의 합이 자신과 같은 수 , 부족수는 합이 자신의 수보다 작은수 , 과잉수는 큰수

입력

각 수는 60,000 보다 작다.

출력

수는 5 자리 확보후 오른쪽에 맞추어 출력후 2 칸 스페이스를 준 후 수의 종류를 출력한다.

입출력 예

입력

15

출력

   15  DEFICIENT

입력

28

출력

   28  PERFECT

입력

   56
   
출력

   56  ABUNDANT

출력 예의 보충 설명

입력 15 에 대한 출력
12345678901234567890123..
   15  DEFICIENT

참고

  • c .. printf("%5d",);
  • c++ .. cout << setw(5) << ..;

풀이 : 약수를 구하는 함수를 코딩한 다음 조건문을 통하여 해결한다.

소스코드

01 #include <stdio.h>

02   
03 int main()
04 {
05     int n,ar[50],sum=0,i,j,count=0;
06     scanf("%d",&n);
07     for(i=1;i<n;i++)
08     {
09         if(n%i==0) 
10         {
11             ar[count]=i;
12             count++;
13         }
14     }
15     for(i=0;i<count;i++)
16         sum+=ar[i];
17     if(sum==n)
18         printf("%5d  PERFECT",n);
19     else if(sum<n)
20         printf("%5d  DEFICIENT",n);
21     else 
22         printf("%5d  ABUNDANT",n);
23 }