암스트롱 수란 무엇일까요?
어떤 숫자의 각 자릿수를 세제곱하여 모두 더한 합이 원래 숫자 자체와 같을 때, 그 수를 암스트롱 수(Armstrong Number)라고 합니다.
예를 들어 153의 경우 1³ + 5³ + 3³ = 1 + 125 + 27 = 153이 되므로, 153은 암스트롱 수입니다.
구현 원리
C#에서 이를 확인하려면 먼저 나머지 연산자(%)를 사용해 숫자의 마지막 자릿수를 하나씩 추출하고, 추출한 자릿수를 세제곱하여 합계에 누적합니다.
rem = i % 10;
sum = sum + rem*rem*rem;
그다음 루프 반복이 끝난 후 계산된 합계(sum)가 원래 입력한 숫자(num)와 같은지 비교합니다. 두 값이 일치하면 해당 숫자는 암스트롱 수입니다.
if (sum == num) {
Console.Write("Armstrong Number!");
}전체 예제 코드
다음은 숫자 153이 암스트롱 수인지 확인하는 완전한 C# 예제입니다.
예제
int num, rem, sum = 0;
// 암스트롱 수 여부 확인
num = 153;
for (int i = num; i > 0; i = i / 10) {
rem = i % 10;
sum = sum + rem*rem*rem;
}
if (sum == num) {
Console.Write("Armstrong Number!");
}
else
Console.Write("Not an Armstrong Number!");
Console.ReadLine();
실행 결과
Armstrong Number!
코드 동작 과정 살펴보기
위 코드가 숫자 153에 대해 어떻게 동작하는지 단계별로 살펴보겠습니다.
1단계: i = 153일 때, 153 % 10 = 3이므로 rem은 3이 되고, sum = 0 + 3³ = 27이 됩니다. 이후 i는 153 / 10 = 15가 됩니다.
2단계: i = 15일 때, 15 % 10 = 5이므로 rem은 5가 되고, sum = 27 + 5³ = 152가 됩니다. 이후 i는 15 / 10 = 1이 됩니다.
3단계: i = 1일 때, 1 % 10 = 1이므로 rem은 1이 되고, sum = 152 + 1³ = 153이 됩니다. 이후 i는 1 / 10 = 0이 되어 루프가 종료됩니다.
최종적으로 sum(153)과 num(153)이 같으므로 "Armstrong Number!"가 출력됩니다. 만약 일치하지 않는다면 "Not an Armstrong Number!"가 출력됩니다.