一个C ++程序,用于计算和显示所有介于100和999之间的阿姆斯壮数字(数字,使得每个数字的总和等于数字的幂)。答案应为153、370、371 ,407。它会打印除153之外的所有内容。
已调试完成,以查看i = 153时各个数字的值。
#include <iostream>
#include <vector>
#include <math.h>
void separateDigits(int n, std::vector<int>& digits)
{
if (n>0)
{
separateDigits(n/10, digits);
digits.push_back(n%10);
}
}
int main()
{
for (int i = 100; i <= 999; i++)
{
std::vector<int> test;
separateDigits(i, test);
int powerSum = 0;
for (auto iter = test.begin(); iter != test.end(); iter++)
{
//powerSum = powerSum + pow((*iter),3);
powerSum = powerSum + (*iter)*(*iter)*(*iter);
}
if (i==powerSum)
{
std::cout << "Armstrong: " << i << std::endl;
}
}
return 0;
}
pow
函数。帖子中的代码已更新。for (int j = 0; j < test.size(); j++)
{
powerSum = powerSum + pow(test[j], 3);
}