카테고리 없음

완전수 찾기

송규 2023. 7. 17. 00:31

완전수(Perfect number)는 자연수 중에서 자기 자신을 제외한 양의 약수의 합이 자기 자신과 같은 특별한 종류의 수를 말합니다. 즉, 어떤 자연수가 자기 자신을 제외한 모든 양의 약수의 합이 그 수 자체와 동일하다면, 이 수는 완전수라고 합니다.

가장 잘 알려진 완전수는 6입니다. 6의 양의 약수는 1, 2, 3이며, 이들의 합은 1 + 2 + 3 = 6이므로 6은 완전수입니다. 또 다른 완전수는 28이며, 28의 양의 약수는 1, 2, 4, 7, 14이며, 이들의 합은 1 + 2 + 4 + 7 + 14 = 28이므로 28 또한 완전수입니다.

완전수는 고대 그리스 시대부터 연구되어온 수학적인 개념으로, 많은 수학자들이 완전수에 대해 연구하고 여러 성질을 밝혀내었습니다. 하지만 아직까지도 완전수가 무한히 많은지, 어떤 규칙에 따라 발견되는지 등에 대해 많은 미스터리가 남아있습니다.

현재까지 알려진 완전수는 다음과 같습니다:
- 6, 28, 496, 8128, 33,550,336, 8,589,869,056, ...

완전수와 관련하여 다양한 수학적 연구가 진행 중이며, 완전수에 대한 새로운 성질을 발견하거나 증명하는 것은 수학의 흥미로운 과제 중 하나입니다.

 

이러한 완전수를 구하는 코드를 짜보았는데요, 코드는 다음과 같습니다.

 

#include <stdio.h>

// 주어진 수가 완전수인지 판별하는 함수
int perfect(int num) {
    int sum = 0;

    // 1부터 n-1까지의 수 중 n의 약수인 경우를 찾아서 합산
    for (int i = 1; i < num; i++) {
        if (num % i == 0) {
            sum += i;
        }
    }

    // 합산된 약수의 합이 num과 같으면 완전수이므로 1을 반환, 아니면 0을 반환
    return sum == num;
}

// start부터 end까지의 범위에서 완전수를 찾아 출력하는 함수
void check(int start, int end) {
    printf("완전수: ");

    for (int num = start; num <= end; num++) {
        if (perfect(num)) {
            printf("%d ", num);
        }
    }

    printf("\n");
}

int main() {
    int start = 1;
    int end = 10000;

    check(start, end);

    return 0;
}

시작 범위와 종료 범위를 입력하면 완전수인지 판단하는 함수를 통해 완전수를 얻어내는 코드입니다.

 

이 코드를 짤때 어려운 점은 딱히 없었던것 같습니다.

그럼 이상으로 마지막 정융탐을 마치겠습니다.!!