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

要理解本示例,您应该了解以下 C++ 编程 主题


如果一个正整数(阶数为 n)的各位数字的 n 次幂之和等于该数字本身,则称该数为阿姆斯特朗数。

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

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

153 = 1*1*1 + 5*5*5 + 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 original 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 循环,直到 originalNum 变为 0。

在循环的每次迭代中,将 orignalNum 的最后一位数字的立方加到 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() 函数计算每个数字的幂。


另请阅读

在我们结束之前,让我们来检验一下你对这个例子的理解!你能解决下面的挑战吗?

挑战

编写一个函数来检查一个数字是否为阿姆斯特朗数。

  • 如果 num 是阿姆斯特朗数,则返回 "It's an Armstrong Number"。否则,返回 "It's not an Armstrong Number"
  • 三位数的阿姆斯特朗数是指其各位数字的立方和等于该数字本身的整数。例如,371 是一个阿姆斯特朗数,因为 3 ^ 3 + 7 ^ 3 + 1 ^ 3 = 371
  • 例如,如果 num = 371,则输出应为 "It's an Armstrong Number"
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战