【发布时间】:2019-10-28 15:42:53
【问题描述】:
我的数学很弱,因此我提出的问题可能与这里的大多数问题无关,但问题是我们为什么要将阿姆斯壮数除以 10?我的意思是我们可以将这个数字除以除 10 之外的任何其他数字。
【问题讨论】:
-
因为您尝试在 十进制 系统中计算数字总和。
-
您所看到的很可能是如何从一个数字中获取一位数。虽然没有看到你的代码,这只是一个猜测。
我的数学很弱,因此我提出的问题可能与这里的大多数问题无关,但问题是我们为什么要将阿姆斯壮数除以 10?我的意思是我们可以将这个数字除以除 10 之外的任何其他数字。
【问题讨论】:
我认为问题在于您不了解阿姆斯壮数是什么。通过一次网络搜索:
三位数的阿姆斯壮数是一个整数,其位数的立方和等于该数本身。例如,371 是阿姆斯壮数,因为 33 + 73 + 13 = 371。
因此,要检查任何随机数是否是 Armstrong 数:例如 243。取写好的数字,做 2×2×2 + 4×4×4 + 3×3×3 = 8 + 16 + 27,只有 99,所以 243 不是阿姆斯壮数。
现在,有两种直接的方法可以在计算机程序中获取数字的各个数字。首先,可以转换成字符串。
std::string theString = to_string(243);
然后对于每个数字,转换回一个数字。这有点恶心。
或者你可以这样做:
int sumOfCubes = 0;
for (int newNumber = myNumber; newNumber > 0; newNumber = newNumber / 10) {
// This is the modulus operator, or the remainder. 243 % 10 = 3.
// 24 % 10 = 4. and 2 % 10 = 2.
int digit = newNumber % 10;
sumOfCubes += digit*digit*digit;
}
if (sumOfCubes == myNumber) {
cout << myNumber << " is an Armstrong number." << endl;
}
循环中发生了什么:
完成。
【讨论】: