반응형
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 수를 구하는 프로그램을 만들어보죠. 프로그램의 흐름은 아래와 같아요:
- 사용자가 숫자를 입력합니다.
- 그 숫자의 각 자릿수를 구하고 자릿수 개수를 파악합니다.
- 각 자릿수를 자릿수 개수만큼 거듭 제곱한 후 그 값을 모두 더합니다.
- 그 합이 원래 숫자와 같은지 확인합니다.
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로 어떻게 구현할 수 있는지 이해할 수 있었기를 바랍니다!
반응형
'자바(Java)' 카테고리의 다른 글
Java에서 주어진 숫자의 팩토리얼을 구하는 프로그램 (0) | 2024.10.14 |
---|---|
Java로 주어진 숫자가 회문(Palindrome)인지 확인하는 프로그램 (0) | 2024.10.14 |
Java 프로그램으로 숫자의 각 자릿수를 더하는 방법 (0) | 2024.10.14 |
Java program to check whether a number is prime or not (1) | 2024.09.22 |
숫자가 소수인지 아닌지 확인하는 Java 프로그램 (0) | 2024.09.21 |