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

C언어로 등비수열의 합을 구하는 프로그램 작성하기

등비수열이란 무엇인가?

이 문제에서는 세 개의 입력값이 주어집니다. 첫 번째는 a로 등비수열의 첫째 항(first term), 두 번째는 r로 공비(common ratio), 세 번째는 n으로 합을 구하려는 항의 개수입니다.

등비수열(Geometric Series)은 연속된 두 항 사이의 비율이 항상 일정하게 유지되는 수열입니다. 입력값 a, r, n을 이용하여 등비수열의 각 항인 a, ar, ar2, ar3, ar4, … 을 생성하고, 그 전체 합인 a + ar + ar2 + ar3 + ar4 + … 을 계산하는 것이 목표입니다.

입력 예시 1

a = 1
r = 0.5
n = 5

출력 결과

1.937500

입력 예시 2

a = 2
r = 2.0
n = 8

출력 결과

510.000000

문제 해결 접근 방법

  • 첫째 항 a, 공비 r, 항의 개수 n을 모두 입력받습니다.

  • 반복문을 사용하여 수열의 모든 항을 차례대로 더함으로써 등비수열의 합을 계산합니다.

알고리즘

시작
float sumgeometric(float a, float r, int n) 함수 정의
    단계 1 → sum = 0 으로 선언 및 초기화
    단계 2 → 반복문 실행: i = 0 부터 i < n 까지, 매 반복마다 i 1씩 증가
        sum = sum + a 로 설정
        a = a * r 로 설정
    단계 3 → sum 반환
int main() 함수 정의
    단계 1 → int a = 1 선언 및 초기화
    단계 2 → float r = 0.5 선언 및 초기화
    단계 3 → int n = 5 선언 및 초기화
    단계 4 → sumgeometric(a, r, n) 결과 출력
종료

C 코드 구현 예시

#include <stdio.h>
// 등비수열의 합을 계산하는 함수
float sumgeometric(float a, float r, int n){
    float sum = 0;
    for (int i = 0; i < n; i++){
        sum = sum + a;
        a = a * r;
    }
    return sum;
}
int main(){
    int a = 1; // 첫째 항
    float r = 0.5; // 공비
    int n = 5; // 항의 개수
    printf("%f", sumgeometric(a, r, n));
    return 0;
}

실행 결과

위 코드를 컴파일하고 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

1.937500

코드 동작 원리 자세히 살펴보기

위 코드는 각 반복마다 현재 항 a를 누적합 sum에 더한 뒤, a에 공비 r을 곱하여 다음 항을 만드는 방식으로 동작합니다. 예제 입력(a = 1, r = 0.5, n = 5)의 경우 반복 과정은 다음과 같습니다.

  • i = 0 : sum = 1.0, 다음 항 a = 0.5

  • i = 1 : sum = 1.5, 다음 항 a = 0.25

  • i = 2 : sum = 1.75, 다음 항 a = 0.125

  • i = 3 : sum = 1.875, 다음 항 a = 0.0625

  • i = 4 : sum = 1.9375, 최종 결과 1.937500

이 알고리즘은 항의 개수만큼 한 번씩 순회하므로 시간 복잡도는 O(n)이며, 추가 메모리를 거의 사용하지 않아 공간 복잡도는 O(1)입니다.

참고: 등비수열 합 공식 활용하기

반복문 대신 수학 공식을 사용하면 O(1) 시간에 합을 구할 수도 있습니다. 공비 r이 1이 아닐 때 등비수열 n항까지의 합은 다음과 같습니다.

Sn = a × (rn − 1) / (r − 1)

다만 공식을 적용할 경우 r = 1인 경우(모든 항이 a와 같음)에는 합이 a × n이라는 점을 별도로 처리해야 하므로, 일반적인 프로그래밍 연습 문제에서는 위처럼 반복문을 사용하는 방법이 더 직관적이고 안전합니다.