C语言统计水仙花数的个数
时间: 2024-01-29 10:03:52 浏览: 26
以下是C语言统计水仙花数个数的代码实现:
```c
#include <stdio.h>
int fun(int n, int m) {
int i, a, b, c, count = 0;
for (i = n; i <= m; i++) {
if(i >= 100 && n <= 999) {
a = i / 100;
b = (i % 100)/10;
c = i % 10;
if(i == a*a*a+b*b*b+c*c*c) {
count++;
}
}
}
return count;
}
int main() {
int m, n;
scanf("%d %d", &m, &n);
printf("%d", fun(m, n));
return 0;
}
```
该程序中,`fun`函数用于统计在`n`和`m`范围内的水仙花数的个数。具体实现是通过循环遍历`n`到`m`之间的所有整数,然后判断每个整数是否为水仙花数,如果是,则计数器`count`加1。最后返回计数器的值。
水仙花数的判断是通过将三位数的百位、十位和个位分别提取出来,然后计算它们的立方和是否等于该数本身。如果是,则该数为水仙花数。
相关问题
C语言求在两个数之间的水仙花数的个数
好的,以下是使用C语言编写的求解在两个数之间的仙花数的个数的程序:
```c
#include <stdio.h>
#include <math.h>
int main() {
int start, end, num, originalNum, remainder, n = 0, result = 0, count = 0;
printf("请输入两个数字,以空格分隔:");
scanf("%d %d", &start, &end);
for (num = start; num <= end; num++) {
originalNum = num;
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
while (originalNum != 0) {
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}
if (result == num) {
count++;
}
n = 0;
result = 0;
}
printf("在 %d 和 %d 之间的水仙花数的个数为:%d\n", start, end, count);
return 0;
}
```
程序会要求用户输入两个数字,然后输出在这两个数字之间的所有水仙花数,并统计其个数。
C语言求在两个数之前的水仙花数的个数
以下是使用C语言编写的求解在两个数之间的仙花数的个数的程序:
```c#include <stdio.h>
#include <math.h>
int main() {
int start, end, num, originalNum, remainder, = 0, result =0, count = 0;
printf("请输入两个数字,以空格分隔:");
scanf("%d %d", &start, &end);
for (num = start; num <= end; num++) {
originalNum = num;
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
while (originalNum != 0) {
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}
if (result == num) {
count++;
printf("%d ", num);
}
n = 0;
result = 0;
}
printf("\n在 %d 和 %d 之间的水仙花数的个数为:%d\n", start, end, count);
return 0;
}
```
程序会要求用户输入两个数字,然后输出在这两个数字之间的所有水仙花数,并统计其个数。