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

분수 형태로 수열의 첫 N개 항(0, 1/4, 1/2, 3/4, 1, …) 출력하기

이 프로그램은 사용자로부터 N값을 입력받아, 0부터 시작하여 1/4씩 증가하는 분수 형태의 수열 0, 1/4, 1/2, 3/4, 1, ...의 첫 N개 항을 차례대로 출력합니다.

문제 예시

예를 들어 N=5를 입력하면 다음과 같은 결과가 나타납니다.

입력 : N = 5
출력 : 0, 1/4, 1/2, 3/4, 1

알고리즘

핵심 아이디어는 각 항을 기약분수 형태로 만들기 위해 분자와 분모를 규칙적으로 결정하는 것입니다. 인덱스 i가 짝수인지 홀수인지, 그리고 4로 나누어떨어지는지에 따라 분자와 분모가 달라집니다.

단계별 절차

  1. 정수형 변수 num(분자), den(분모), i(반복 변수), n(항의 개수)을 선언합니다.
  2. 사용자로부터 수열의 길이 n을 입력받습니다.
  3. i가 0부터 n 미만일 때까지 반복하며 다음을 수행합니다.
    • i가 짝수인 경우(i % 2 == 0):
      • i가 4로 나누어떨어지면 → num = i / 4, den = 0 (정수로 표현)
      • 그렇지 않으면 → num = i / 2, den = 2 (분수로 표현)
    • i가 홀수인 경우 → num = i, den = 4 (분수로 표현)
  4. den이 0이 아니면 "num/den" 형태로 출력하고, 0이면 num만 단독으로 출력합니다.
  5. 반복이 끝나면 프로그램을 종료합니다.

C 언어 구현 예제

#include <stdio.h>
int main(int argc, char const *argv[]) {
    int num, den;
    int i, n;
    printf("수열의 길이를 입력하세요\n");
    scanf("%d", &n); // 수열은 0부터 시작
    for (i = 0; i < n; i++) {
        if (i % 2 == 0) { // 분자가 짝수인지 검사
            if (i % 4 == 0) { // 4로 나누어떨어지면 약분하여 정수로 처리
                num = i / 4;
                den = 0;
            }
            else { // 4로 나누어떨어지지 않는 짝수는 분모 2로 표현
                num = i / 2;
                den = 2;
            }
        }
        else { // 홀수인 경우 분모 4로 표현
            num = i;
            den = 4;
        }
        if (den != 0) { // 분모가 0이 아니면 분수 형태로 출력
            printf("%d/%d\n", num, den);
        }
        else // 그렇지 않으면 일반 숫자 형태로 출력
            printf("%d\n", num);
    }
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 출력이 생성됩니다.

수열의 길이를 입력하세요
5
0
1/4
1/2
3/4
1

이처럼 조건 분기만으로 각 항의 분자와 분모를 적절히 설정하면, 별도의 약분 연산 없이도 깔끔한 분수 형태의 수열을 손쉽게 출력할 수 있습니다.