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

C++로 급수의 합 구하기: 1/a + 2/a² + 3/a³ + … + n/aⁿ

이 튜토리얼에서는 주어진 급수 1/a + 2/a² + 3/a³ + … + n/aⁿ의 합을 구하는 C++ 프로그램을 다뤄보겠습니다.

이 문제에서는 a와 n의 값이 주어지며, 첫 번째 항부터 n번째 항까지 각 항을 순서대로 모두 더하여 급수의 전체 합을 계산하는 것이 목표입니다.

접근 방법

급수의 일반항은 i/aⁱ 형태입니다. 따라서 다음과 같은 절차로 합을 구할 수 있습니다.

1. 반복문을 사용해 i를 1부터 n까지 증가시킵니다.
2. C++의 pow() 함수를 이용해 aⁱ 값을 계산합니다.
3. 각 항 i / aⁱ를 변수 sum에 누적하여 더합니다.
4. 반복이 끝나면 최종 합을 반환합니다.

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
// 급수의 합을 계산하는 함수
float calc_sum(int a, int n) {
    int i;
    float sum = 0;
    for (i = 1; i <= n; i++)
        sum += (i / pow(a, i));
    return sum;
}
int main() {
    int a = 3, n = 4;
    float res = calc_sum(a, n);
    cout << res << endl;
    return 0;
}

출력 결과

0.716049

동작 원리

위 예제에서 a = 3, n = 4일 때 각 항은 다음과 같이 계산됩니다.

1/3 + 2/9 + 3/27 + 4/81
= 0.333333 + 0.222222 + 0.111111 + 0.049383
= 0.716049

즉, 프로그램은 반복문을 통해 각 항을 차례로 더하고, 그 결과인 0.716049를 출력합니다. 이 방식의 시간 복잡도는 O(n)으로, n이 커져도 효율적으로 동작합니다.