암스트롱 수는 총 자릿수의 거듭제곱으로 거듭제곱한 자릿수의 합이 그 수와 같은 수입니다.
암스트롱 수의 몇 가지 예는 다음과 같습니다 -
3 = 3^1 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153 407 = 4^3 + 0^3 + 7^3 = 64 +0 + 343 = 407 1634 = 1^4 + 6^4 + 3^4 + 4^4 = 1 + 1296 + 81 + 256 = 1634
두 간격 사이의 암스트롱 수를 표시하는 프로그램은 다음과 같습니다.
예시
#include <iostream> #include <cmath> using namespace std; int main() { int lowerbound, upperbound, digitSum, temp, remainderNum, digitNum ; lowerbound = 100; upperbound = 500; cout<<"Armstrong Numbers between "<<lowerbound<<" and "<<upperbound<<" are: "; for(int num = lowerbound; num <= upperbound; num++) { 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<<" "; } return 0; }
출력
Armstrong Numbers between 100 and 500 are: 153 370 371 407
위의 프로그램에서 주어진 간격 사이의 암스트롱 수를 찾습니다. 이것은 여러 단계를 사용하여 수행됩니다. 간격의 하한과 상한이 제공됩니다. 이를 사용하여 for 루프가 하한에서 상한으로 시작되고 각 숫자를 평가하여 암스트롱 숫자인지 여부를 확인합니다.
이는 다음 코드 스니펫에서 확인할 수 있습니다.
lowerbound = 100; upperbound = 500; cout<<"Armstrong Numbers between "<<lowerbound<<" and "<<upperbound<<" are: "; for(int num = lowerbound; num <= upperbound; num++)
for 루프에서 먼저 숫자의 자릿수, 즉 num의 자릿수를 찾습니다. 각 자릿수에 대해 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<<" ";