[출처 : Goorm 사이트 - 화난 묵밥]
문제
완전수란 자신을 제외한 모든 약수의 합이 자신과 같은 수를 말합니다.
입력값으로 범위를 입력하고 해당 범위 내의 완전수들을 모두 출력하는 프로그램을 작성하세요.
* 완전수의 예 : 6
6의 약수 1, 2, 3, 6 => 1 + 2 + 3 = 6 (완전수)
입력
두 수 A, B ( A < B, A, B는 10000 이하의 양의 정수)
출력
A, B를 포함한 범위 내의 완전수
풀이
* 숫자 n이 완전수인지 알아내는 방법.
1) 약수 구하기 -> 1부터 해당 수 까지 나누기해서 나머지 값이 '0'인 경우
2) 구한 약수 더하기
3) 더한 결과값이 숫자 n과 같은지 비교
4) 같은 경우 출력하기.
- 이중 반복문을 이용했다.
- 숫자가 완전수 인지 판별할 때마다 이전 숫자의 약수들이 합해져 있는 temp를 비워주고 시작해야 한다.
결과 코드
#include <stdio.h>
int main() {
int min, max;
int temp=0;
scanf("%d %d", &min, &max);
for(int i=min; i<=max; i++){
for(int j=1; j<i; j++){
if(i%j==0) temp += j;
}
if(i==temp) printf("%d ", i);
temp=0;
}
return 0;
}
결과
* 개인적인 학습 목적으로 작성한 글이기에 내용에 잘못된 정보가 있을 수 있습니다.
* 문제 출처 - level.goorm.io/exam/43275/완전수/quiz/1
'게임 클라이언트 개발 > 알고리즘 문제' 카테고리의 다른 글
[알고리즘 2단계] 방 탈출하기 (퀵 정렬, 이진탐색) (1) | 2020.07.24 |
---|---|
[알고리즘 2단계] 알파벳 빈도 구하기 (1) | 2020.07.23 |
[알고리즘 2단계] Factorial(계승) (0) | 2020.07.21 |
[알고리즘 2단계] 계산기 (0) | 2020.07.21 |
[알고리즘 1단계] 369게임 (0) | 2020.07.20 |