一个正整数称为阿姆斯特朗数(n阶)如果
abcd... = an + bn + cn + dn + ...
对于 3 位数的阿姆斯特朗数,每位数的立方和等于该数本身。例如,153 是一个阿姆斯特朗数,因为
153 = 1*1*1 + 5*5*5 + 3*3*3
示例: 检查 Armstrong 的 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; 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中。
而且,
pow()
函数在
while
循环的每次迭代中计算各个数字的幂。