[C로 쓴 자료구조론] 1장 연습문제-6번(제수) 풀이

두비니

·

2020. 5. 4. 17:17

 

 

 

 

문제


6. 어떤 양의 정수 n에 대해 이 자신의 모든 제수들의 합인지를 알아내는 C프로그램을 작성하여라.

즉 n이 1<=t<n이고 t가 n의 제수가 되는 모든 t의 합인지를 검사하는 것이다.


 

 

일단 제가 아는 제수는 가족관계사이 제수밖에 없는지라 좀 찾아봤습니다...

찾으니까 2010년대 초 글들이 나오네요.

 

제수는 인수와 비슷한 뜻을 가졌더라구요 피제수(나눠지는 수)의 반보다 작고 피제수를 나누는 수를 제수라고 하네요

예를 들어서 설명해보면

 

예를들어 12의 제수는 1, 2, 3, 4, 6입니다. 12의 반(6)보다 작고 12의 인수인 것들

 

아무튼 이거만 이해하면 충분히 코드를 짤 수 있을 것 같네요 해봅시다

 

#include <stdio.h>	

int main() {
	int n=6, sum;

	printf("이 프로그램은 1부터 1000까지의 값들 중 제수와 자기자신이 같은지 확인하는 프로그램입니다.\n");
	for (n = 1; n <= 1000; n++) {
		sum = 0;
		for (int i = 1; i <= n / 2; i++) {
			if (n % i == 0) {
				sum += i;
			}

		}
		if (sum == n)
			printf("%d의 제수의 합은 자기자신과 같습니다.\n", n);
	}

	return 0;
}

 

for문 시작할 때 sum을 초기화해주는게 중요합니다. 저도 중간에 이거때문에 헤맸네요.