输出100到1000以内是“水仙花数”的所有三位数。水仙花数是指三位数的各位数字的立方和等于这个三位数本身。例如:153=1*1*1+5*5*5+3*3*3
时间: 2025-07-08 10:42:00 浏览: 6
<<
要找出100到1000之间的所有水仙花数,可以通过编写一段简单的C++程序来实现。我们只需要对每个三位数进行分解,并检查它们是否满足定义条件即可。
下面是具体的解决方案:
### 解决方案
```cpp
#include <iostream>
using namespace std;
int main() {
cout << "100 到 1000 内的所有水仙花数为:" << endl;
for (int num = 100; num <= 999; ++num) { // 遍历所有的三位数
int hundreds = num / 100; // 获取百位上的数字
int tens = (num % 100) / 10; // 获取十位上的数字
int units = num % 10; // 获取个位上的数字
if ((hundreds * hundreds * hundreds +
tens * tens * tens +
units * units * units) == num) {
cout << num << endl; // 如果符合条件,则输出该数字
}
}
return 0;
}
```
---
### 给出解释
#### 水仙花数的计算逻辑
根据题目要求,“水仙花数”必须满足以下公式:
对于任意三位数 `abc`(其中 a、b 和 c 分别表示百位、十位和个位),如果其符合下列等式则称为“水仙花数”:
\[ \text{a}^3 + \text{b}^3 + \text{c}^3 = abc \]
为了验证某个数是否为水仙花数,我们需要将其拆分为各个位上的值并分别求三次方后相加。然后将结果与原始数值比较。
#### 具体步骤
1. 使用循环遍历从 100 到 999 的所有整数。
2. 对于当前迭代中的每一个数字,使用数学运算提取每一位的数字:
- 百位数字可通过 \( \lfloor\frac{\text{number}}{100}\rfloor \) 计算得出;
- 十位数字可通过 \( (\text{number mod } 100)\div 10\) 得出;
- 个位数字即为 \( \text{number mod } 10 \)。
3. 将这三部分各自立方后再累加起来并与原数值对比;若二者一致,则判定此数为水仙花数并打印出来。
运行上述代码会得到答案如下几个数:153, 370, 371, 407.
---
阅读全文
相关推荐


















