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

显示两个时间间隔之间的Armstrong编号的程序如下。

示例

#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循环,并评估每个数字以查看其是否为Armstrong数。

在下面的代码片段中可以看到。

lowerbound = 100;
upperbound = 500;
cout<<"Armstrong Numbers between "<<lowerbound<<" and "<<upperbound<<" are: ";
for(int num = lowerbound; num <= upperbound; num++)

在for循环中,首先找到数字(即num)中的位数。这是通过为每个数字在digitNum上添加一个来完成的。

下面的代码片段对此进行了演示。

temp = num;
digitNum = 0;
while (temp != 0) {
   digitNum++;
   temp = temp/10;
}

在知道位数之后,通过将每个数字加到digitNum的幂(即位数)来计算digitSum。

在下面的代码片段中可以看到。

temp = num;
digitSum = 0;
while (temp != 0) {
   remainderNum = temp%10;
   digitSum = digitSum + pow(remainderNum, digitNum);
   temp = temp/10;
}

如果该数字等于digitSum,则该数字是阿姆斯壮数字,并被打印。如果不是,则它不是Armstrong号码。在下面的代码片段中可以看到。

if (num == digitSum)
cout<<num<<" ";