암스트롱 수는 총 자릿수의 거듭제곱으로 거듭제곱한 자릿수의 합이 그 수와 같은 수입니다. 암스트롱 수의 몇 가지 예는 다음과 같습니다.
3 = 3^1 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153 371 = 3^3 + 7^3 + 1^3 = 27 + 343 + 1 = 371 407 = 4^3 + 0^3 + 7^3 = 64 +0 + 343 = 407
번호가 암스트롱 번호인지 확인하는 프로그램은 다음과 같습니다.
예시
#include <iostream> #include <cmath< using namespace std; int main() { int num = 153, digitSum, temp, remainderNum, digitNum ; temp = num; digitNum = 0; while (temp != 0) { digitNum++; temp = temp/10; } temp = num; digitSum = 0; while (temp != 0) { remainderNum = temp%10; digitSum = digitSum + pow(remainderNum, digitNum); temp = temp/10; } if (num == digitSum) cout<<num<<" is an Armstrong number"; else cout<<num<<" is not an Armstrong number"; return 0; }
출력
153 is an Armstrong number
위의 프로그램에서 주어진 숫자가 암스트롱 숫자인지 아닌지를 판별합니다. 이것은 여러 단계를 사용하여 수행됩니다. 먼저 숫자의 자릿수를 찾습니다. 각 자릿수에 대해 digitNum에 1을 추가하면 됩니다.
이것은 다음 코드 스니펫에 의해 설명됩니다 -
temp = num; digitNum = 0; while (temp != 0) { digitNum++; temp = temp/10; }
자릿수를 알면 digitSum은 각 자릿수를 digitNum의 거듭제곱, 즉 자릿수에 더하여 계산됩니다. 이는 다음 코드 스니펫에서 확인할 수 있습니다.
temp = num; digitSum = 0; while (temp != 0) { remainderNum = temp%10; digitSum = digitSum + pow(remainderNum, digitNum); temp = temp/10; }
숫자가 digitSum과 같으면 해당 숫자는 암스트롱 숫자이며 인쇄됩니다. 그렇지 않은 경우 암스트롱 번호가 아닙니다. 이것은 아래 코드 스니펫에서 볼 수 있습니다.
if (num == digitSum) cout<<num<<" is an Armstrong number"; else cout<<num<<" is not an Armstrong number";