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

C 언어로 등비수열(GP)의 N번째 항 구하기

첫째 항 a, 공비 r, 그리고 항의 개수 n이 주어졌을 때, 등비수열의 n번째 항을 구하는 것이 이 글의 목표입니다.

프로그램 작성 방법을 살펴보기에 앞서, 먼저 등비수열(Geometric Progression)이 무엇인지 정확히 이해할 필요가 있습니다.

등비수열이란?

등비수열(기하수열)은 수학에서 첫 번째 항 이후의 각 항이 바로 앞의 항에 공비(common ratio)를 곱하는 방식으로 일정한 개수만큼 만들어지는 수열을 의미합니다.

예를 들어 2, 4, 8, 16, 32...는 첫째 항이 2이고 공비가 2인 등비수열입니다. 만약 n = 4라면 네 번째 항인 16이 결과로 출력됩니다.

등비수열의 n번째 항 공식

등비수열의 각 항은 다음과 같이 표현할 수 있습니다.

GP1 = a1
GP2 = a1 * r^(2-1)
GP3 = a1 * r^(3-1)
. . .
GPn = a1 * r^(n-1)

따라서 n번째 항을 구하는 일반화된 공식은 다음과 같습니다.

GP = a * r^(n-1)

예제

입력: A=1
     R=2
     N=5
출력: 수열의 5번째 항은: 16
설명: 수열의 항은 1, 2, 4, 8, 16이므로 결과는 16입니다.

입력: A=1
     R=2
     N=8
출력: 수열의 8번째 항은: 128

문제 해결 접근 방법

  • 첫째 항 A, 공비 R, 그리고 항의 개수 N을 입력받습니다.
  • A * (int)(pow(R, N - 1)) 공식을 이용해 n번째 항을 계산합니다.
  • 계산된 결과값을 반환하여 출력합니다.

알고리즘

시작
    단계 1 -> 함수 int Nth_of_GP(int a, int r, int n)에서
        return( a * (int)(pow(r, n - 1)) ) 값을 반환
    단계 2 -> 함수 int main()에서
        변수 a를 선언하고 1로 초기화
        변수 r을 선언하고 2로 초기화
        변수 n을 선언하고 8로 초기화
        함수 Nth_of_GP(a, r, n) 호출 결과를 출력
종료

C 언어 구현 코드

#include <stdio.h>
#include <math.h>
// 등비수열의 n번째 항을 반환하는 함수
int Nth_of_GP(int a, int r, int n) {
    // n번째 항은 a * r^(n-1)
    return( a * (int)(pow(r, n - 1)) );
}
// 메인 블록
int main() {
    // 첫째 항
    int a = 1;
    // 공비
    int r = 2;
    // 구하려는 항의 순서
    int n = 8;
    printf("The %dth term of the series is: %d\n", n, Nth_of_GP(a, r, n));
    return 0;
}

실행 결과

The 8th term of the series is: 128

위 코드는 math.h 헤더 파일의 pow() 함수를 활용하여 거듭제곱을 계산한 뒤, 정수형으로 형 변환하여 최종 결과를 도출합니다. 시간 복잡도는 pow() 함수의 구현에 따라 달라지지만, 일반적으로 매우 효율적으로 n번째 항을 구할 수 있습니다.