【求水仙花数编程,c++的】在C++编程中,求解“水仙花数”是一个经典的算法问题。水仙花数(Narcissistic Number)也称为自幂数,是指一个n位数,其各位数字的n次方之和等于该数本身。例如:153、370、371、407等都是三位数的水仙花数。
本文将总结如何用C++编写程序来找出指定范围内的所有水仙花数,并通过表格形式展示结果。
一、水仙花数的定义
- 三位数的水仙花数:每个数字的立方和等于自身。
- 例如:153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153
- 四位数的水仙花数:每个数字的四次方和等于自身。
- 例如:1634 = 1⁴ + 6⁴ + 3⁴ + 4⁴ = 1 + 1296 + 81 + 256 = 1634
二、C++实现思路
1. 输入范围:用户输入起始和结束值(如从100到999)。
2. 遍历每个数:逐个检查是否为水仙花数。
3. 分解各位数字:提取每一位上的数字。
4. 计算各数字的n次方之和:n是该数的位数。
5. 比较是否相等:若相等,则输出该数。
三、C++代码示例
```cpp
include
include
using namespace std;
bool isNarcissistic(int num) {
int original = num;
int sum = 0;
int digits = 0;
// 计算位数
while (num > 0) {
num /= 10;
digits++;
}
num = original;
while (num > 0) {
int digit = num % 10;
sum += pow(digit, digits);
num /= 10;
}
return sum == original;
}
int main() {
int start, end;
cout << "请输入起始值: ";
cin >> start;
cout << "请输入结束值: ";
cin >> end;
cout << "水仙花数如下:" << endl;
for (int i = start; i <= end; i++) {
if (isNarcissistic(i)) {
cout << i << endl;
}
}
return 0;
}
```
四、水仙花数列表(100~999)
数字 | 是否为水仙花数 |
153 | 是 |
370 | 是 |
371 | 是 |
407 | 是 |
1634 | 是(四位数) |
8208 | 是(四位数) |
9474 | 是(四位数) |
> 注:以上表格仅列出部分常见水仙花数,实际可运行程序获取完整结果。
五、总结
通过C++编程,我们可以高效地找出指定范围内的所有水仙花数。此过程涉及数字的分解、幂运算以及数值比较,是学习循环、条件判断和数学运算的良好实践。掌握这一算法不仅有助于理解数字特性,也为后续更复杂的数值处理打下基础。