如果一个3位正整数等于其各个数字的3次方的和,则称这个数为阿姆斯特朗数(也称自恋型数),也称为水仙花数,如407=43+03+73。请编写C++程序求100~999以内的所有阿姆斯特朗数,要求输出数据之间使用逗号(,)分隔,末尾没有逗号。
时间: 2024-11-20 09:43:44 浏览: 18
水仙花数,也称为阿姆斯特朗数,是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(C语言源代码)
为了找到100到999之间的阿姆斯特朗数,我们可以遍历这个范围内的每个三位数,然后计算其各位数字的立方和。如果和等于原数本身,那么它就是一个阿姆斯特朗数。以下是用C++编写的简单程序:
```cpp
#include <iostream>
#include <string>
int cubeSum(int num) {
int sum = 0;
std::string digits = std::to_string(num);
for (char digit : digits) {
int digitValue = digit - '0';
sum += digitValue * digitValue * digitValue;
}
return sum;
}
bool isArmstrongNumber(int num) {
return num == cubeSum(num);
}
int main() {
int start = 100;
int end = 999;
for (int i = start; i <= end; ++i) {
if (isArmstrongNumber(i)) {
std::cout << i << " ";
}
}
// 输出结束前移除最后一个空格
std::cout << std::endl;
return 0;
}
```
在这个程序中,`cubeSum`函数用于计算数字的各位置立方和,`isArmstrongNumber`函数检查一个数是否是阿姆斯特朗数。在`main`函数中,我们对100到999范围内的每个数进行检查并打印出符合条件的阿姆斯特朗数。
运行这个程序,你会得到100至999范围内所有的阿姆斯特朗数,它们之间由逗号分隔。注意,最后会有一个换行符。
阅读全文