用c++完成:输出所有的“水仙花数”,水仙花数是指一个三位数,其各位数字立方和等于其本身。
时间: 2023-12-03 15:13:57 浏览: 89
Sure, 我可以很轻松地给您展示如何用C语言输出所有水仙花数:
#include <stdio.h>
#include <math.h>
// 定义函数,用于判断一个数是否是水仙花数
int isArmstrong(int num) {
int temp = num;
int sum = 0;
int n = 0;
while (temp > 0) {
temp /= 10;
n++;
}
temp = num;
while (temp > 0) {
int remainder = temp % 10;
sum += pow(remainder, n);
temp /= 10;
}
return sum == num;
}
int main() {
for (int i = 100; i < 1000; i++) {
if (isArmstrong(i)) {
printf("%d ", i);
}
}
return 0;
}
希望这可以帮到您!
相关问题
写一个C++程序:输出所有的“水仙花数”,所谓“水仙花数”是指一个3 位数,其各位数字立方和等于该数本身。例如,153 是一水仙花数
。这是一个简单的 C 语言程序,用于打印所有的“水仙花数”:
```
#include <stdio.h>
int main() {
int i, j, k, n;
for (n = 100; n < 1000; n++) {
i = n / 100; // 计算百位
j = (n / 10) % 10; // 计算十位
k = n % 10; // 计算个位
if (i * i * i + j * j * j + k * k * k == n) {
printf("%d\n", n); // 打印该数
}
}
return 0;
}
```
该程序使用 for 循环遍历所有的三位数,分别计算其百位、十位和个位数字。然后,它检查该数是否是“水仙花数”,即它的立方和是否等于该数本身。如果是,则打印该数。
用C++写:所谓“水仙花数”是指一个三位数 ,其各位数字的立方和等于该数本身。例如 ,153 是一个“水仙花数”,因为153=1³+5³+3³。编程打印出所有“水仙花数”,要求结果用空格分割。
在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;
}
```
当运行这段代码,它会输出所有水仙花数,数值之间用空格分隔。
阅读全文