求水仙花数用c++zenme写
时间: 2023-11-02 11:17:56 浏览: 86
以下是用C语言编写的求水仙花数的程序:
```c
#include <stdio.h>
#include <math.h>
int main() {
int num, digit, sum;
printf("水仙花数:\n");
for (num = 100; num < 1000; num++) {
digit = num;
sum = 0;
while (digit != 0) {
int remainder = digit % 10;
sum += pow(remainder, 3);
digit /= 10;
}
if (sum == num) {
printf("%d\n", num);
}
}
return 0;
}
```
程序的思路是:从100到999循环遍历每个三位数,将每个数的每一位数字取出来,计算各位数字的立方和,如果和等于这个数本身,就输出该数,即为水仙花数。程序中使用了pow函数来计算立方。
相关问题
判断一个数是否为水仙花数字用C++
判断一个数是否为水仙花数字是一个经典的数学性质问题,它是指一个三位数(例如153),其各位数字立方之和等于该数本身。在C++中,你可以创建一个函数来检查这个条件。以下是一个简单的示例:
```cpp
#include <iostream>
#include <cmath>
bool isAquileonumber(int num) {
int digits[3]; // 用于存储百位、十位和个位数字
if (num < 10 || num > 999) { // 检查输入是否在范围之内
return false;
}
// 分离每个数字
int temp = num;
digits[0] = temp / 100; // 百位
temp %= 100;
digits[1] = temp / 10; // 十位
temp %= 10;
digits[2] = temp; // 个位
// 计算每个位置的立方和
int sum = digits[0]*digits[0]*digits[0] + digits[1]*digits[1]*digits[1] + digits[2]*digits[2]*digits[2];
// 如果和等于原数,就是水仙花数
return sum == num;
}
int main() {
int num;
std::cout << "请输入一个三位数: ";
std::cin >> num;
if (isAquileonumber(num)) {
std::cout << num << " 是水仙花数\n";
} else {
std::cout << num << " 不是水仙花数\n";
}
return 0;
}
c++用while求水仙花数
在C++中,水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如,153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
下面是用`while`循环寻找水仙花数的一个简单示例:
```cpp
#include <iostream>
#include <cmath>
bool is narcissistic(int num) {
int sum = 0;
while (num != 0) {
int digit = num % 10;
sum += std::pow(digit, 3);
num /= 10;
}
return sum == num;
}
int main() {
int start = 100; // 水仙花数最低是三位数
int end = 999; // 最高位不能超过9
while (start <= end) {
if (is_narcissistic(start)) {
std::cout << "找到水仙花数: " << start << std::endl;
}
start++;
}
return 0;
}
```
这个程序从100开始遍历到999,每次检查当前数字是否为水仙花数,如果是,则打印出来。`is_narcissistic`函数用于计算并验证一个整数是否满足水仙花条件。
阅读全文