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

C 언어로 처음 n개의 자연수의 세제곱합을 구하는 프로그램 만들기

세제곱합(Cube Sum)이란?

처음 n개의 자연수의 세제곱합이란, 1부터 n까지의 모든 자연수를 각각 세제곱한 뒤 모두 더한 값을 의미합니다. 즉, 다음과 같은 급수의 합입니다.

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

입력 및 출력 예시

입력: 6
출력: 441

계산 과정 설명

n이 6일 경우, 각 자연수를 세제곱하여 더하면 다음과 같습니다.

1³ + 2³ + 3³ + 4³ + 5³ + 6³
= 1 + 8 + 27 + 64 + 125 + 216
= 441

for 반복문을 이용한 구현

for 반복문으로 숫자를 1부터 n까지 하나씩 증가시키면서, 각 숫자를 세제곱한 값을 누적 변수에 더하면 세제곱합을 손쉽게 구할 수 있습니다.

#include <stdio.h>

int main() {
    int n = 6;
    long long sum = 0;

    for (int i = 1; i <= n; i++) {
        sum += (long long)i * i * i;
    }

    printf("%lld\n", sum);
    return 0;
}

위 코드에서는 n이 커질 때 세제곱값이 int 범위를 초과할 수 있으므로, 오버플로우를 방지하기 위해 long long 타입을 사용했습니다. 코드를 실행하면 6의 세제곱합인 441이 출력됩니다.

수학 공식을 이용한 효율적인 방법

반복문 없이 다음 공식을 활용하면 O(1)의 시간 복잡도로 결과를 바로 계산할 수 있습니다.

세제곱합 = (n × (n + 1) / 2)²
#include <stdio.h>

int main() {
    int n = 6;
    long long base = (long long)n * (n + 1) / 2;
    printf("%lld\n", base * base);
    return 0;
}

이 공식은 "처음 n개 자연수의 합의 제곱"이 곧 세제곱합과 같다는 잘 알려진 수학적 성질을 이용한 것으로, n이 매우 큰 경우에도 빠르게 결과를 얻을 수 있다는 장점이 있습니다.