检查阿姆斯特朗数的 C++ 程序

在此示例中,您将学习检查用户输入的数字是否为 Armstrong 数字。

要理解此示例,您应该具备以下 C++ 编程 主题的知识:

如果一个 n 位正整数等于其各位数字的 n 次方之和,则称该数为阿姆斯特朗数。

如果是 3 位数的阿姆斯特朗数,则每位数的立方的和等于该数本身。例如 153 是一个阿姆斯特朗数。因为: 153 = 1*1*1 + 5*5*5 + 3*3*3

示例:检查一个 3 位数是否阿姆斯特朗数

#include <iostream>
using namespace std;

int main() {
    int num, originalNum, remainder, result = 0;
    cout << "Enter a three-digit integer: ";
    cin >> num;
    originalNum = num;

    while (originalNum != 0) {
        // remainder contains the last digit
        remainder = originalNum % 10;

        result += remainder * remainder * remainder;

        // removing last digit from the orignal number
        originalNum /= 10;
    }

    if (result == num)
        cout << num << " is an Armstrong number.";
    else
        cout << num << " is not an Armstrong number.";

    return 0;
}

输出

Enter a positive integer: 371
371 is an Armstrong number.

在程序中,我们遍历 while 循环,直到 是 0。

在循环的每次迭代中,originalNum 中的最后一位数的立方添加到 result.

remainder = originalNum % 10;
result += remainder * remainder * remainder;

然后,从 orignalNum 移除最后一位.

当循环结束时,单个数字的立方体的总和存储在 result.

示例:检查一个 n 位数是否阿姆斯特朗数

#include <cmath>
#include <iostream>

using namespace std;

int main() {
   int num, originalNum, remainder, n = 0, result = 0, power;
   cout << "Enter an integer: ";
   cin >> num;

   originalNum = num;

   while (originalNum != 0) {
      originalNum /= 10;
      ++n;
   }
   originalNum = num;

   while (originalNum != 0) {
      remainder = originalNum % 10;

      // pow() returns a double value
      // round() returns the equivalent int
      power = round(pow(remainder, n));
      result += power;
      originalNum /= 10;
   }

   if (result == num)
      cout << num << " is an Armstrong number.";
   else
      cout << num << " is not an Armstrong number.";
   return 0;
}

输出

Enter an integer: 1634
1634 is an Armstrong number.

在这个程序中,首先计算输入的数字的位数并存储在变量 n 中.

然后,在 while 循环的每次迭代中使用 pow() 函数计算各个数字的幂。