如何用C++程序来计算并输出100到一个特定整数n范围内的所有水仙花数?
时间: 2024-10-22 20:23:33 浏览: 45
水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。要编写C++程序来找出100到n范围内的所有水仙花数,你可以按照以下步骤:
1. 定义一个函数`isArmstrong(int number)`,用于检查一个数是否为水仙花数。这个函数需要将输入的数分解成三个位数,然后分别计算它们的立方和并与原数比较。
```cpp
bool isArmstrong(int number) {
int original_number, digit, sum = 0;
original_number = number;
// 把数字转换为字符串,便于提取每一位
std::string num_str = std::to_string(number);
int length = num_str.length();
if (length != 3) return false; // 只考虑三位数
for (int i = 0; i < length; ++i) {
digit = num_str[i] - '0'; // 转换为整数
sum += pow(digit, 3); // 立方和
}
return sum == original_number;
}
```
2. 主程序部分遍历从100到n的每个数,调用上述函数,如果返回true,则输出这个数。
```cpp
#include <iostream>
#include <cmath>
int main() {
int n;
std::cout << "请输入一个整数n(大于100): ";
std::cin >> n;
for (int i = 100; i <= n; ++i) {
if (isArmstrong(i)) {
std::cout << i << " 是一个水仙花数.\n";
}
}
return 0;
}
```
阅读全文