用c++编写程序找出所有水仙花数(一个三位数的每为数字的立方和等于该三位数称为水仙花数)
时间: 2024-09-21 09:08:43 浏览: 106
在 C++ 中,要找出所有的水仙花数,你可以创建一个函数来检查给定的整数是否满足条件,然后遍历从 100 到 999 的范围。以下是简单的步骤:
```cpp
#include <iostream>
#include <cmath>
bool is narcissistic(int number) {
int sum = 0;
int original_number = number; // 保存原始数值以便计算每位的立方
while (number > 0) {
int digit = number % 10;
sum += std::pow(digit, 3); // 计算每一位的立方并加到总和上
number /= 10;
}
return sum == original_number; // 如果总和等于原数,就是水仙花数
}
int main() {
for (int i = 100; i <= 999; ++i) {
if (is_narcissistic(i)) {
std::cout << i << " 是一个水仙花数.\n";
}
}
return 0;
}
```
在这个程序中,`is_narcissistic` 函数负责判断,而 `main` 函数通过迭代找到所有的水仙花数并打印出来。
相关问题
1、编写程序找出所有水仙花数(一个三位数的每为数字的立方和等于该三位数称为水 仙花数);用c++
在C++中,编写程序找出所有的水仙花数可以分为几个步骤:
1. 定义函数:首先创建一个函数,它接受一个整数作为输入,并检查这个数是否为水仙花数。
```cpp
bool is narcissistic(int number) {
int digits[3];
int sum = 0;
// 将三位数分解成各个位上的数字
while (number > 0) {
digits[2] = number % 10;
sum += digits[2] * digits[2] * digits[2]; // 立方和
number /= 10;
}
// 检查原数和立方和是否相等
return sum == number;
}
```
2. 循环遍历:从最小的三位数900开始,递减到最大的三位数999,对每个数调用`is Narcissistic`函数进行判断。
```cpp
void findNarcissisticNumbers() {
for (int i = 999; i >= 100; i--) {
if (is narcissistic(i)) {
std::cout << i << " ";
}
}
}
```
3. 主函数:将上述函数放入主函数`main()`中,并运行整个查找过程。
```cpp
int main() {
findNarcissisticNumbers();
return 0;
}
```
当你运行此程序时,它会输出所有水仙花数,例如:153, 370, 371, 407.
用dev_c++编写程序输出所有的水仙花数。提示:水仙花数是一个3位整数,它的各位数字的立方和等于该数本身
在Dev-C++中编写程序来找出所有的水仙花数,你可以创建一个新的源文件(`.cpp`),然后使用for循环遍历三位数范围内的每个数,并计算其每一位数字的立方和。如果这个和等于原数,那么就打印出来,它是水仙花数。以下是简单的代码示例:
```cpp
#include <iostream>
using namespace std;
bool is narcissistic(int num) {
int sum = 0;
int temp = num; // 获取当前数
while (temp > 0) {
int digit = temp % 10; // 取出个位
sum += pow(digit, 3); // 立方并累加
temp /= 10; // 移除个位
}
return sum == num; // 如果累加和等于原始数,则是水仙花数
}
int main() {
for (int i = 100; i <= 999; ++i) { // 遍历三位数
if (is_narcissistic(i)) {
cout << i << " 是水仙花数" << endl;
}
}
return 0;
}
```
在这个程序中,我们首先定义了一个函数`is_narcissistic`用于检查给定的数是否是水仙花数,然后在主函数`main`里通过循环找出并输出这些数。
阅读全文