用C++写:所谓“水仙花数”是指一个三位数 ,其各位数字的立方和等于该数本身。例如 ,153 是一个“水仙花数”,因为153=1³+5³+3³。编程打印出所有“水仙花数”,要求结果用空格分割。
时间: 2024-10-20 16:16:17 浏览: 37
在C++中,你可以通过遍历所有三位数,并检查它们的每一位立方之和是否等于整个数本身来找出所有的水仙花数。以下是实现这一功能的代码片段:
```cpp
#include <iostream>
#include <vector>
using namespace std;
bool is narcissistic(int num) {
int digits[4]; // 存储每位的立方
int sum = 0;
// 分割三位数
while (num > 0) {
digits[num % 10]++;
num /= 10;
}
// 检查各位立方和是否等于原数
for (int i = 0; i < 3; i++) {
sum += pow(digits[i], 3);
if (sum != num) {
return false;
}
}
return true;
}
void printNarcissisticNumbers() {
vector<int> narcissistic_nums;
// 遍历100-999范围内的所有数
for (int i = 100; i <= 999; i++) {
if (is_narcissistic(i)) {
narcissistic_nums.push_back(i);
}
}
// 打印水仙花数
for (int num : narcissistic_nums) {
cout << num << " ";
}
cout << endl;
}
int main() {
printNarcissisticNumbers();
return 0;
}
```
当运行这段代码,它会输出所有水仙花数,数值之间用空格分隔。
阅读全文