c语言水仙花数枚举法
时间: 2023-12-28 18:25:25 浏览: 95
以下是使用枚举法求解水仙花数的C语言程序:
```c
#include <stdio.h>
int main() {
int i, j, k, n;
for (i = 1; i < 10; i++) {
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
n = 100 * i + 10 * j + k;
if (n == (i * i * i + j * j * j + k * k * k)) {
printf("%d\n", n);
}
}
}
}
return 0;
}
```
这段程序使用三层嵌套的循环来枚举所有的三位数。在每次循环中,我们计算当前的三位数n,并判断它是否是水仙花数。如果是,就将其打印出来。
水仙花数是指一个三位数,其各个位上的数字的立方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
应用扩展:如果你想求解0~10000之间的水仙花数,你可以将循环的范围修改为`for (i = 0; i < 10; i++)`,并在外层再加一层循环来枚举百位数。这样就可以找到所有的水仙花数了。
相关问题
C语言枚举法输出水仙花数
以下是使用C语言枚举法输出水仙花数的示例代码:
```c
#include <stdio.h>
int main() {
int num, digit, sum;
printf("水仙花数:\n");
for (num = 100; num <= 999; num++) {
sum = 0;
int temp = num;
while (temp != 0) {
digit = temp % 10;
sum += digit * digit * digit;
temp /= 10;
}
if (sum == num) {
printf("%d\n", num);
}
}
return 0;
}
```
这段代码使用了一个循环来遍历所有的三位数。对于每个数,它将每一位的立方和累加到变量`sum`中。如果`sum`等于该数本身,则说明该数是水仙花数,将其打印出来。
水仙花数是指一个3 位数,它的每个位上的数字的立方和等于它本身,例如:153=13+53+33。 应用枚举法编写一个 C 语言程序,输出所有的水仙花数。
为了找出所有的水仙花数,我们可以创建一个C语言程序,通过循环遍历所有三位数,对每一位进行立方运算,然后检查这个和是否等于原数。下面是实现这一功能的一个简单示例程序:
```c
#include <stdio.h>
// 函数声明
void findWaterLilyNumbers(int start, int end);
int main() {
int low = 100; // 开始查找的最小三位数
int high = 999; // 结束查找的最大三位数
// 调用函数,找到所有的水仙花数
findWaterLilyNumbers(low, high);
return 0;
}
// 枚举法寻找水仙花数
void findWaterLilyNumbers(int start, int end) {
for (int num = start; num <= end; num++) {
int hundreds = num / 100; // 百位数
int tens = (num % 100) / 10; // 十位数
int units = num % 10; // 个位数
int sumOfCubes = hundreds * hundreds * hundreds +
tens * tens * tens +
units * units * units;
// 检查是否为水仙花数
if (sumOfCubes == num) {
printf("%d is a Water Lily number.\n", num);
}
}
}
```
当你运行这个程序,它会在100到999范围内查找所有满足条件的水仙花数,并打印出来。如果存在这样的数,它们会被逐个显示。注意,由于范围较大,这个程序可能会花费一些时间来完成搜索。
阅读全文