阿姆斯壮数字。失败153

问题描述 投票:-1回答:2

一个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;
}

Output screenshot

c++ loops number-theory
2个回答
0
投票
使用整数乘法,而不是pow函数。帖子中的代码已更新。

0
投票
改变循环,看看它是如何工作的:

for (int j = 0; j < test.size(); j++) { powerSum = powerSum + pow(test[j], 3); }

© www.soinside.com 2019 - 2024. All rights reserved.