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

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

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


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

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

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

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

示例:检查 3 位阿姆斯特朗数

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. int num, originalNum, remainder, result = 0;
  5. cout << "Enter a three-digit integer: ";
  6. cin >> num;
  7. originalNum = num;
  8. while (originalNum != 0) {
  9. // remainder contains the last digit
  10. remainder = originalNum % 10;
  11. result += remainder * remainder * remainder;
  12. // removing last digit from the orignal number
  13. originalNum /= 10;
  14. }
  15. if (result == num)
  16. cout << num << " is an Armstrong number.";
  17. else
  18. cout << num << " is not an Armstrong number.";
  19. return 0;
  20. }

输出

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

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

在循环的每次迭代中,将orignalNum的最后一位数字的立方添加到result中。

  1. remainder = originalNum % 10;
  2. result += remainder * remainder * remainder;

并且,最后一位从orignalNum中删除。

循环结束时,单个数字的立方的总和存储在result中。


示例:检查 n 位阿姆斯特朗数

  1. #include <cmath>
  2. #include <iostream>
  3. using namespace std;
  4. int main() {
  5. int num, originalNum, remainder, n = 0, result = 0, power;
  6. printf("Enter an integer: ");
  7. scanf("%d", &num);
  8. originalNum = num;
  9. while (originalNum != 0) {
  10. originalNum /= 10;
  11. ++n;
  12. }
  13. originalNum = num;
  14. while (originalNum != 0) {
  15. remainder = originalNum % 10;
  16. // pow() returns a double value
  17. // round() returns the equivalent int
  18. power = round(pow(remainder, n));
  19. result += power;
  20. originalNum /= 10;
  21. }
  22. if (result == num)
  23. cout << num << " is an Armstrong number.";
  24. else
  25. cout << num << " is not an Armstrong number.";
  26. return 0;
  27. }

输出

  1. Enter an integer: 1634
  2. 1634 is an Armstrong number.

在该程序中,首先计算输入数字的位数,并将其存储在n中。

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