📌  相关文章
📜  C程序以显示两个间隔之间的阿姆斯壮数

📅  最后修改于: 2020-10-04 11:16:51             🧑  作者: Mango

在此示例中,您将学习查找用户输入的两个整数之间的所有Armstrong数字。

如果一个正整数称为阿姆斯特朗数( n),如果

abcd... = an + bn + cn + dn + 

对于3位数的阿姆斯特朗数,每个数位的立方和等于该数字本身。例如,153是Armstrong的数字,因为

153 = 1*1*1 + 5*5*5 + 3*3*3

在尝试该程序之前,请学习如何检查整数是否为阿姆斯特朗数。


两个整数之间的阿姆斯壮数
#include 
#include 
int main() {
   int low, high, number, originalNumber, rem, count = 0;
   double result = 0.0;
   printf("Enter two numbers(intervals): ");
   scanf("%d %d", &low, &high);
   printf("Armstrong numbers between %d and %d are: ", low, high);

   // iterate number from (low + 1) to (high - 1)
   // In each iteration, check if number is Armstrong
   for (number = low + 1; number < high; ++number) {
      originalNumber = number;

      // number of digits calculation
      while (originalNumber != 0) {
         originalNumber /= 10;
         ++count;
      }

      originalNumber = number;

      // result contains sum of nth power of individual digits
      while (originalNumber != 0) {
         rem = originalNumber % 10;
         result += pow(rem, count);
         originalNumber /= 10;
      }

      // check if number is equal to the sum of nth power of individual digits
      if ((int)result == number) {
         printf("%d ", number);
      }

      // resetting the values
      count = 0;
      result = 0;
   }

   return 0;
}

输出

Enter two numbers(intervals): 200
2000
Armstrong numbers between 200 and 2000 are: 370 371 407 1634 

在程序中,外循环从(low + 1)迭代到(high-1) 。在每次迭代中,都会检查数字是否为阿姆斯壮数字。

在外循环内部,首先计算一个整数的位数,并将其存储在count 。并且,各个数字的幂之和存储在结果变量中。

如果number等于result ,则该数字为阿姆斯壮数字。

注意:您需要在外部循环的每次迭代中将计数结果重置为0。