게임 클라이언트 개발/알고리즘 문제

[알고리즘 2단계] 완전수

주운녕 2020. 7. 22. 10:04

[출처 : 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