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

C++로 구현하는 첫 n개 자연수의 세제곱 합 계산 프로그램

정수 n이 주어졌을 때, 첫 n개의 자연수를 각각 세제곱한 값들을 모두 더한 합계를 구하는 것이 이번 문제의 목표입니다. 즉, n개의 자연수를 세제곱한 뒤 그 결과값들을 모두 합산해야 합니다.

모든 n에 대해 결과는 다음과 같은 형태가 됩니다.

1³ + 2³ + 3³ + … + n³

예를 들어 n = 4라면, 위 문제의 결과는 1³ + 2³ + 3³ + 4³이 됩니다.

입력 및 출력 예시

입력

4

출력

100

설명

1³ + 2³ + 3³ + 4³ = 100

입력

8

출력

1296

설명

1³ + 2³ + 3³ + 4³ + 5³ + 6³ + 7³ + 8³ = 1296

문제 해결 접근 방법

이 문제는 간단한 반복(iteration) 방식으로 해결할 수 있습니다. for 루프, while 루프, do-while 루프 등 어떤 반복문이든 활용할 수 있습니다.

  • i를 1부터 n까지 반복합니다.

  • 각 i에 대해 세제곱 값을 계산합니다.

  • 모든 세제곱 값을 sum 변수에 계속 더해 나갑니다.

  • sum 변수를 반환합니다.

  • 결과를 출력합니다.

알고리즘

시작
Step 1 → 첫 n개 자연수의 세제곱 합을 계산하는 함수 선언
    int series_sum(int total)
        int sum = 0 선언
        Loop For int i = 1 and i <= total and i++
            sum += i * i * i 설정
        End
        return sum
Step 2 → main() 함수에서
        int total = 10 선언
        series_sum(total) 호출
종료

C++ 코드 예제

#include <iostream>
using namespace std;
// 수열의 합을 계산하는 함수
int series_sum(int total){
    int sum = 0;
    for (int i = 1; i <= total; i++)
        sum += i * i * i;
    return sum;
}
int main(){
    int total = 10;
    cout<<"sum of series is : "<<series_sum(total);
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

sum of series is : 3025

추가 팁: 수학 공식을 활용한 방법

반복문 대신 수학 공식을 사용하면 O(1) 시간 복잡도로 더 빠르게 계산할 수 있습니다. 첫 n개 자연수의 세제곱 합은 다음 공식으로 표현됩니다.

(n × (n + 1) / 2)²

예를 들어 n = 10일 경우, (10 × 11 / 2)² = 55² = 3025로, 반복문 방식과 동일한 결과를 얻을 수 있습니다. n이 매우 큰 경우에는 이 공식을 활용하는 것이 성능 면에서 훨씬 유리합니다.