되는대로 살자

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

2009~2014/C/C++

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

malu 2010. 7. 15. 17:54
완전수란 자신을 제외한 약수의 합이 자신이 되는 수를 완전수라 한다.

6 은 완전수이다. 6 의 약수는

1 2 3 6
이 중 자신을 제외한 약수의 합 1 + 2 + 3 = 6 즉 6 은 완전수이다.

입력

1000 이하의 자연수를 입력받는다.

출력

완전수이면 yes , 아니면 no 를 출력한다.

입출력 예

입력

6

출력

yes

입력

8

출력

no

풀이
먼저 받은 값의 약수를 구하는 함수를 코딩 한 다음 그 약수들을 배열에 정렬한 다음 더하거나 약수를 구할 때 마다 일정한 변수에 누적하여 자신의 출력하게 하면 된다. 약수를 구하는 함수(n 이라 칭함) 는 1부터 자신의 수 까지 도는 변수를 지정(i라 칭함) 하고 루프를 돌면서  i%n==0 인 조건을 만족하는지 살펴본다.
소스파일
-----------------------------------------------------
01 #include <stdio.h>
02   
03 int main()
04 {
05 int n,i,sum=0,p=0;
06 scanf("%d",&n);
07 for(i=n-1; i>0; i--)
08 {
09     if(n % i == 0)
10     {
11         sum += i;
12     }
13 }
14 if( sum == n )
15     printf("yes");
16 else 
17     printf("no");
18 return 0;
19 }
------------------------------------------------------------