阿姆斯特朗数字。失败了153次 一个C++程序,计算和显示所有阿姆斯壮数(数字,使得每个位数与数字位数的幂之和等于100)。答案应该是153370371407。它只印了153页
已完成调试,以查看i=153的各个数字的值阿姆斯特朗数字。失败了153次 一个C++程序,计算和显示所有阿姆斯壮数(数字,使得每个位数与数字位数的幂之和等于100)。答案应该是153370371407。它只印了153页,c++,loops,number-theory,C++,Loops,Number Theory,已完成调试,以查看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%1
#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;
}
#包括
#包括
#包括
void separatedgits(整数n,标准::矢量和数字)
{
如果(n>0)
{
独立数字(n/10,数字);
数字。推回(n%10);
}
}
int main()
{
对于(int i=100;i这似乎不是您的最佳选择:
powerSum = powerSum + (*iter)*(*iter)*(*iter);
由于现在已嵌入上一个常量3
:
powerSum = powerSum + pow((*iter),3);
在一个更模糊的方式中,为什么不考虑一种更清洁的方式,它还支持三位数以外的数量:
unsigned digitsSize = test.size();
for (auto iter = test.begin(); iter != test.end(); iter++)
{
unsigned power = 1;
for (unsigned size = 0; size < digitsSize; size++) {
power *= *iter;
}
powerSum += power;
}
这似乎不是您的最佳选择:
powerSum = powerSum + (*iter)*(*iter)*(*iter);
由于现在已嵌入上一个常量3
:
powerSum = powerSum + pow((*iter),3);
在一个更模糊的方式中,为什么不考虑一种更清洁的方式,它还支持三位数以外的数量:
unsigned digitsSize = test.size();
for (auto iter = test.begin(); iter != test.end(); iter++)
{
unsigned power = 1;
for (unsigned size = 0; size < digitsSize; size++) {
power *= *iter;
}
powerSum += power;
}
#包括//查找ARMSRONG编号的程序。
#include//仅适用于三位数字。
int main()
{
int num,dig1,dig2,dig3;
对于(num=1;num#include//程序,用于查找ARMSRONG编号。
#include//仅适用于三位数字。
int main()
{
int num,dig1,dig2,dig3;
对于(num=1;num我看到153pow
是一个浮点函数,因此它会有舍入错误。为什么不改用普通整数乘法呢,就像在*iter**iter**iter
中一样?你的代码对我来说很好!奇怪。对我来说不起作用,在post中添加了屏幕截图。我看到153pow
是一个浮点函数n、 因此,它会有舍入错误。为什么不使用普通整数乘法来代替呢,就像在*iter**iter**iter
中一样?你的代码对我来说非常好!奇怪。不适合我,屏幕截图添加到帖子中。不要对int
使用pow
。不要对int
s使用pow
。