C++求m和n范围内水仙花数
时间: 2024-11-15 21:22:26 浏览: 29
在C++中,水仙花数是指那些所有位上的数字立方之和等于其本身的三位数。比如153就是水仙花数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
如果你想要编写一个函数来找出给定范围内的水仙花数,可以遵循以下步骤:
```cpp
#include <iostream>
#include <vector>
bool is_armstrong(int num) {
int original_num = num;
int sum = 0;
int temp = num;
// 把数字分解成每一位并计算它们的立方和
while (temp != 0) {
int digit = temp % 10;
sum += digit * digit * digit; // 累加每个数字的立方
temp /= 10;
}
return original_num == sum;
}
std::vector<int> find_water_lilies(int m, int n) {
std::vector<int> result;
for (int i = m; i <= n; ++i) {
if (is_armstrong(i)) {
result.push_back(i);
}
}
return result;
}
int main() {
int range_start = 100; // 示例范围的开始值,你可以替换为实际需求
int range_end = 999; // 示例范围的结束值
std::vector<int> water_lilies = find_water_lilies(range_start, range_end);
if (!water_lilies.empty()) {
std::cout << "在范围 " << range_start << " 到 " << range_end << " 内的水仙花数有:";
for (int num : water_lilies) {
std::cout << num << " ";
}
} else {
std::cout << "在指定范围内没有找到水仙花数.";
}
return 0;
}
```
这个程序会找出给定范围`[m, n]`内的所有水仙花数,并将结果存储在一个向量中。注意,你需要根据实际情况调整`main`函数中的`range_start`和`range_end`变量。
阅读全文