2009~2014/C/C++
[C언어 기출문제&풀이] 완전수
malu
2010. 7. 15. 17:54
완전수란 자신을 제외한 약수의 합이 자신이 되는 수를 완전수라 한다.
풀이
먼저 받은 값의 약수를 구하는 함수를 코딩 한 다음 그 약수들을 배열에 정렬한 다음 더하거나 약수를 구할 때 마다 일정한 변수에 누적하여 자신의 출력하게 하면 된다. 약수를 구하는 함수(n 이라 칭함) 는 1부터 자신의 수 까지 도는 변수를 지정(i라 칭함) 하고 루프를 돌면서 i%n==0 인 조건을 만족하는지 살펴본다.
소스파일
-----------------------------------------------------
------------------------------------------------------------
6 은 완전수이다. 6 의 약수는
이 중 자신을 제외한 약수의 합 1 + 2 + 3 = 6 즉 6 은 완전수이다.1 2 3 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 |
} |