Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그램으로 십각수(Decagonal Number) 구하는 방법

십각수란 무엇인가?

십각수(decagonal number)는 삼각수와 사각수의 개념에서 확장된 도형수(figurate number)의 일종입니다. 도형수는 점들을 특정한 기하학적 도형의 형태로 배열했을 때 만들어지는 수를 의미하며, 십각수는 이러한 원리를 열 개의 변을 가진 십각형에 적용한 것입니다.

십각수는 회전 대칭이 아닌 방식으로 수열을 확장하여 만들어지며, 서로 중첩된(nested) 십각형 안에 포함된 점들의 개수로 정의됩니다.

십각수의 계산 원리

십각수를 시각적으로 이해해 보겠습니다. 여러 개의 십각형이 하나씩 중첩되어 있을 때, 각 겹의 변의 길이는 다음과 같이 늘어납니다.

  • 가장 바깥쪽 첫 번째 겹의 변: 30
  • 두 번째 겹의 변: 20
  • 가장 안쪽 겹의 변: 10
  • 모든 겹이 공유하는 변: 6 + 2 = 8

따라서 전체 점의 개수는 다음과 같이 계산됩니다.

총합 = 30 + 20 + 10 − (6 + 2) = 52

일반화 공식

위와 같은 규칙을 일반화하면, n번째 십각수는 다음 공식으로 구할 수 있습니다.

D(n) = 4n² − 3n

이 공식을 활용하면 초기 십각수들은 다음과 같습니다.

  • n = 1 → 4(1)² − 3(1) = 1
  • n = 2 → 4(2)² − 3(2) = 10
  • n = 3 → 4(3)² − 3(3) = 27
  • n = 4 → 4(4)² − 3(4) = 52
  • n = 5 → 4(5)² − 3(5) = 85

C 프로그램으로 십각수 구하기

다음은 사용자로부터 n을 입력받아 해당하는 십각수를 출력하는 C 프로그램입니다.

#include <stdio.h>

// n번째 십각수를 계산하는 함수
int decagonalNumber(int n) {
    return 4 * n * n - 3 * n;
}

int main() {
    int n;

    printf("몇 번째 십각수를 구할까요? ");
    scanf("%d", &n);

    if (n < 1) {
        printf("1 이상의 자연수를 입력해 주세요.\n");
        return 0;
    }

    printf("%d번째 십각수는 %d입니다.\n", n, decagonalNumber(n));

    return 0;
}

실행 결과 예시

몇 번째 십각수를 구할까요? 4
4번째 십각수는 52입니다.

응용: 첫 N개의 십각수 한 번에 출력하기

반복문을 활용하면 원하는 범위의 십각수를 모두 출력할 수도 있습니다.

#include <stdio.h>

int main() {
    int i, limit;

    printf("출력할 십각수의 개수: ");
    scanf("%d", &limit);

    for (i = 1; i <= limit; i++) {
        printf("%d번째 십각수: %d\n", i, 4 * i * i - 3 * i);
    }

    return 0;
}

이처럼 간단한 수학 공식과 반복문만으로도 십각수를 손쉽게 계산할 수 있습니다. 도형수는 삼각수, 사각수, 오각수 등 다양한 형태로 확장할 수 있으므로, 알고리즘 학습 및 수학적 사고력 훈련에 좋은 소재가 됩니다.