Skip to content

Latest commit

 

History

History
129 lines (90 loc) · 2.89 KB

File metadata and controls

129 lines (90 loc) · 2.89 KB

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

原文: https://www.programiz.com/cpp-programming/examples/check-armstrong-number

在此示例中,您将学习检查用户输入的号码是否是阿姆斯特朗数。

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


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

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

对于 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循环,直到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;
   printf("Enter an integer: ");
   scanf("%d", &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中。

并且,pow()函数计算while循环的每次迭代中各个数字的幂。