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

C 프로그램으로 암스트롱 수(Armstrong Number) 판별하기

암스트롱 수(Armstrong Number)란, 각 자릿수를 세제곱한 값들을 모두 더한 합이 원래의 수와 같아지는 수를 말합니다. 이 개념은 프로그래밍 학습 초기 단계에서 반복문, 조건문, 나머지 연산 등 기본적인 논리 구조를 익히는 데 자주 활용되는 대표적인 수학 문제입니다.

입력: 370
출력: 370은 암스트롱 수입니다.

암스트롱 수의 원리

예를 들어 370을 살펴보겠습니다. 370의 각 자릿수는 3, 7, 0이며, 이 숫자들을 각각 세제곱하여 더하면 다음과 같습니다.

370 = 3×3×3 + 7×7×7 + 0×0×0
    = 27 + 343 + 0
    = 370

계산 결과인 370이 원래 수와 일치하므로, 370은 암스트롱 수입니다. 같은 방식으로 153(1 + 125 + 27 = 153), 371, 407 등도 암스트롱 수에 해당합니다.

C 프로그램 구현 예제

다음은 사용자로부터 정수를 입력받아 해당 수가 암스트롱 수인지 판별하는 C 프로그램입니다.

#include <stdio.h>

int main() {
    int n, num, digit, sum = 0;

    scanf("%d", &n);
    num = n;

    while (num != 0) {
        digit = num % 10;          // 마지막 자릿수 추출
        sum += digit * digit * digit; // 세제곱하여 누적 합산
        num /= 10;                 // 마지막 자릿수 제거
    }

    if (sum == n)
        printf("%d는 암스트롱 수입니다.\n", n);
    else
        printf("%d는 암스트롱 수가 아닙니다.\n", n);

    return 0;
}

코드 동작 과정

이 프로그램의 핵심 로직은 다음과 같습니다.

1. num % 10 연산으로 가장 뒤쪽 자릿수 하나를 추출합니다.
2. 추출한 자릿수를 세제곱하여 sum 변수에 누적합니다.
3. num /= 10 연산으로 처리한 자릿수를 제거하고, 수가 0이 될 때까지 위 과정을 반복합니다.
4. 반복이 끝난 후 sum과 원래 입력값 n을 비교하여 두 값이 같으면 암스트롱 수로 판별합니다.

이처럼 나머지 연산자(%)와 나눗셈 연산자(/)를 조합하면 별도의 배열 없이도 자릿수를 손쉽게 분리할 수 있으며, 이는 자릿수 관련 다양한 알고리즘 문제에서 널리 쓰이는 기본 기법입니다.