본문 바로가기
자바(Java)

Java로 Armstrong Number를 구하는 프로그램

by 코딩하는 욤욤이 2024. 10. 14.
반응형

Armstrong 수(또는 Narcissistic 수)는 각 자릿수의 숫자를 모두 자릿수 개수만큼 거듭 제곱한 후 합한 값이 본래의 숫자와 같은 숫자를 말해요. 예를 들어, 153은 Armstrong 수인데요, 1³ + 5³ + 3³ = 153이기 때문이죠.

이제 Java로 Armstrong 수를 구하는 프로그램을 이해할 수 있도록 차근차근 설명해드릴게요.

 

1. Armstrong 수란 무엇인가요?

Armstrong 수는 자릿수와 관련된 개념이에요. 예를 들어 3자리 수인 153은 다음과 같이 각 자릿수를 3제곱하고 그 값을 더했을 때, 그 결과가 원래 숫자인 153과 같아요.

13+53+33=1531^3 + 5^3 + 3^3 = 153

Armstrong 수는 자릿수가 몇 개인지에 따라 계산 방법이 달라지는데요, 예를 들어 4자리 수는 각 숫자를 4제곱해서 더한 값과 원래 숫자를 비교하게 됩니다.

 

2. 프로그램 작성에 필요한 단계

이제 Armstrong 수를 구하는 프로그램을 만들어보죠. 프로그램의 흐름은 아래와 같아요:

  1. 사용자가 숫자를 입력합니다.
  2. 그 숫자의 각 자릿수를 구하고 자릿수 개수를 파악합니다.
  3. 각 자릿수를 자릿수 개수만큼 거듭 제곱한 후 그 값을 모두 더합니다.
  4. 그 합이 원래 숫자와 같은지 확인합니다.

3. Java 코드 예시

이제 이를 실제 코드로 구현해볼게요.

import java.util.Scanner;

public class ArmstrongNumber {

    public static void main(String[] args) {
        // 1. 사용자로부터 숫자를 입력 받음
        Scanner scanner = new Scanner(System.in);
        System.out.print("숫자를 입력하세요: ");
        int number = scanner.nextInt();

        // 2. 입력받은 숫자를 복사해서 사용할 변수
        int originalNumber = number;
        int sum = 0;
        int digits = 0;

        // 3. 자릿수를 구하기 위한 복사된 숫자를 사용
        while (originalNumber != 0) {
            originalNumber /= 10;  // 숫자를 10으로 나누어 자릿수를 셈
            digits++;
        }

        // 4. 자릿수를 세기 위해 변수를 초기화
        originalNumber = number;

        // 5. 각 자릿수를 구하고 제곱하여 합계 구하기
        while (originalNumber != 0) {
            int digit = originalNumber % 10;  // 마지막 자릿수 구하기
            sum += Math.pow(digit, digits);   // 자릿수만큼 거듭 제곱해서 더하기
            originalNumber /= 10;             // 숫자를 10으로 나누어 다음 자릿수로 이동
        }

        // 6. 계산된 합과 원래 숫자를 비교
        if (sum == number) {
            System.out.println(number + "는 Armstrong 수입니다.");
        } else {
            System.out.println(number + "는 Armstrong 수가 아닙니다.");
        }
    }
}

4. 코드 설명

  • Scanner: 사용자가 입력한 값을 받아오는 도구입니다. Scanner를 사용해 숫자를 입력받고, 그 값을 number라는 변수에 저장합니다.
  • 자릿수 구하기: while (originalNumber != 0) 루프는 숫자를 10으로 계속 나눠서 자릿수를 세는 역할을 합니다. 예를 들어, 153을 입력하면 1, 5, 3으로 분리되어 자릿수는 3이 됩니다.
  • Math.pow() 함수: 이 함수는 숫자의 거듭 제곱을 계산합니다. 각 자릿수를 구한 후 자릿수만큼 제곱해서 그 값을 sum에 더해 줍니다.
  • 비교: 마지막으로 sum과 입력받은 원래 숫자 number를 비교하여 같으면 Armstrong 수라고 출력하고, 그렇지 않으면 아니라는 메시지를 출력합니다.

5. 프로그램 실행 예시

숫자를 입력하세요: 153
153는 Armstrong 수입니다.
숫자를 입력하세요: 123
123는 Armstrong 수가 아닙니다.

6. 요약

  • Armstrong 수는 각 자릿수를 자릿수만큼 거듭 제곱한 후 합이 원래 숫자와 같은 수입니다.
  • 이 프로그램은 입력된 숫자가 Armstrong 수인지 확인해줍니다.
  • Java의 Math.pow() 함수를 사용해 자릿수를 제곱하고, 최종적으로 합과 입력한 수를 비교합니다.

이 코드를 통해 Armstrong 수가 무엇인지, 그리고 이를 Java로 어떻게 구현할 수 있는지 이해할 수 있었기를 바랍니다!

반응형