암스트롱 수는 총 자릿수의 거듭제곱으로 거듭제곱한 자릿수의 합이 그 수와 같은 수입니다. 암스트롱 수의 몇 가지 예는 다음과 같습니다.
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";