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

C 언어로 등차수열(A.P.)의 합을 구하는 프로그램

문제 정의

등차수열의 합을 구하는 프로그램을 작성해 봅시다. 사용자로부터 첫 번째 항(초항), 항의 총 개수, 그리고 공차를 입력받아 해당 수열의 합을 계산하는 것이 목표입니다.

개념 이해

등차수열(Arithmetic Progression, A.P.)이란 연속된 두 항 사이의 차이가 항상 일정한 수열을 말합니다. 이때 각 항 사이의 일정한 차이를 '공차(common difference)'라고 부르며, 수열의 마지막 항(n번째 항)은 Tn으로 표기합니다.

등차수열의 합과 n번째 항을 구하는 공식은 다음과 같습니다.

등차수열의 합: Sn = n/2 × (2a + (n – 1) × d)
n번째 항: Tn = a + (n – 1) × d

a = 초항, d = 공차, n = 항의 개수

알고리즘

다음 알고리즘을 참고하여 등차수열의 합을 구할 수 있습니다.

Step 1: 변수를 선언한다.
Step 2: sum = 0 으로 초기화한다.
Step 3: 실행 시점에 수열의 첫 번째 숫자를 입력받는다.
Step 4: 실행 시점에 수열의 총 항의 개수를 입력받는다.
Step 5: 실행 시점에 공차를 입력받는다.
Step 6: 아래 공식을 이용해 합(sum)을 계산한다.
    sum = (num * (2 * a + (num - 1) * diff)) / 2
Step 7: 아래 공식을 이용해 마지막 항(tn)을 계산한다.
    tn = a + (num - 1) * diff
Step 8: for 반복문을 사용한다.
    i = a; i <= tn; i = i + diff
    i. if(i != tn) 인 경우,
       printf("%d + ", i); 출력
    ii. else 인 경우,
       printf("%d = %d", i, sum); 출력
Step 9: 줄바꿈 문자를 출력한다.

C 프로그램 코드

다음은 등차수열의 합을 구하는 C 프로그램 전체 코드입니다.

#include <stdio.h>
int main() {
    int a, num, diff, tn, i;
    int sum = 0;
    printf(" enter 1st no of series: ");
    scanf("%d", &a);
    printf(" enter total no's in series: ");
    scanf("%d", &num);
    printf("enter Common Difference: ");
    scanf("%d", &diff);
    sum = (num * (2 * a + (num - 1) * diff)) / 2;
    tn = a + (num - 1) * diff;
    printf("\n sum of A.P series is : ");
    for(i = a; i <= tn; i = i + diff){
        if(i != tn)
            printf("%d + ", i);
        else
            printf("%d = %d", i, sum);
    }
    printf("\n");
    return 0;
}

실행 결과

위 프로그램을 컴파일하고 실행하면 다음과 같은 결과를 확인할 수 있습니다.

enter 1st no of series: 3
enter total no's in series: 10
enter Common Difference: 5
sum of A.P series is: 3 + 8 + 13 + 18 + 23 + 28 + 33 + 38 + 43 + 48 = 255

enter 1st no of series: 2
enter total no's in series: 15
enter Common Difference: 10
sum of A.P series is: 2 + 12 + 22 + 32 + 42 + 52 + 62 + 72 + 82 + 92 + 102 + 112 + 122 + 132 + 142 = 1080

코드 설명

프로그램의 동작 흐름을 살펴보면 다음과 같습니다. 먼저 scanf() 함수를 통해 초항(a), 항의 개수(num), 공차(diff)를 차례로 입력받습니다. 그다음 등차수열의 합 공식을 적용해 전체 합을 미리 계산하고, 마지막 항(tn)도 함께 구합니다.

이후 for 반복문이 초항부터 마지막 항까지 공차만큼씩 증가하며 각 항을 화면에 출력합니다. 현재 항이 마지막 항이 아니면 뒤에 '+' 기호를 붙여 출력하고, 마지막 항에 도달하면 '= 합계' 형태로 출력하여 완성된 수열 식을 보여줍니다.

예를 들어 초항이 3, 항의 개수가 10, 공차가 5인 경우, 3부터 시작해 5씩 증가하는 3, 8, 13, ..., 48까지 열 개의 항이 생성되며, 이들의 합인 255가 최종적으로 출력됩니다.