c++本关任务:编程求出所有的水仙花数。所谓水仙花数,是指一个三位正整数,其各位数字的立方和等于该整数本身。 例如:153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3,所以153是水仙数。
时间: 2024-09-24 22:13:54 浏览: 15
C++编程可以采用循环遍历的方式来找出所有的水仙花数。下面是一个简单的示例代码,它会从最小的三位数900到最大的九位数999进行检查:
```cpp
#include <iostream>
#include <cmath>
bool is narcissistic(int num) {
int digits[3]; // 存储每一位数字
int sum = 0;
// 将三位数分解成三个单独的数字
while (num > 0) {
digits[2] = num % 10;
sum += std::pow(digits[2], 3);
num /= 10;
}
// 检查是否所有数字的立方和等于原数
return sum == num;
}
int main() {
for (int i = 100; i <= 999; ++i) {
if (is_narcissistic(i)) {
std::cout << i << " 是水仙花数\n";
}
}
return 0;
}
```
这个程序首先定义了一个函数`is_narcissistic`,用于检查输入的数字是否是水仙花数。然后在`main`函数里,我们遍历从100到999的所有整数,如果某个数满足条件,则打印出来。
相关问题
输入一个整数,判断它是不是水仙花,是水仙花数,输出yes,不是水仙花数,输出no,如果不是一个三位数,输出error
水仙花数(Narcissistic Number)也称为自恋数或超完美数字,是指一个n位正整数等于其各个位上的数字的n次方之和。例如,153是一个水仙花数,因为 \(1^3 + 5^3 + 3^3 = 153\)。
以下是C++代码,用于判断一个整数是否为水仙花数:
```cpp
#include <iostream>
#include <cmath>
bool is_narcissistic(int number) {
// 检查是否是三位数
if (number < 100 || number >= 1000) {
return false;
}
// 将数字分解到个位、十位和百位
int hundreds = number / 100;
int tens = (number % 100) / 10;
int units = number % 10;
// 计算每个位上数字的立方和
int sum_of_cubes = std::pow(hundreds, 3) + std::pow(tens, 3) + std::pow(units, 3);
// 判断是否相等
return sum_of_cubes == number;
}
int main() {
int input;
std::cout << "Enter a three-digit integer: ";
std::cin >> input;
if (is_narcissistic(input)) {
std::cout << "yes" << std::endl;
} else {
std::cout << "no" << std::endl;
}
return 0;
}
```
用 c++ 编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。所谓的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。
```
#include <stdio.h>
int main() {
int N, i, ge, shi, bai, sum;
printf("请输入正整数N(N大于等于100小于等于999):");
scanf("%d", &N);
printf("100~%d之间的水仙花数为:\n", N);
for(i=100; i<=N; i++) {
ge = i % 10; // 个位数
shi = i / 10 % 10; // 十位数
bai = i / 100; // 百位数
sum = ge * ge * ge + shi * shi * shi + bai * bai * bai; // 立方和
if(sum == i) {
printf("%d\n", i);
}
}
return 0;
}
```