Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

두 간격 사이에 암스트롱 수를 표시하는 C++ 프로그램

<시간/>

암스트롱 수는 총 자릿수의 거듭제곱으로 거듭제곱한 자릿수의 합이 그 수와 같은 수입니다.

암스트롱 수의 몇 가지 예는 다음과 같습니다 -

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<<" ";