첫째 항 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번째 항을 구할 수 있습니다.