C语言统计水仙花数的个数
时间: 2024-01-29 19:03:52 浏览: 84
以下是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语言编写“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。 现在要求统计在m和n范围内的水仙花数的个数。
以下是用C语言编写的求解“水仙花数”个数的程序:
```c
#include <stdio.h>
int main()
{
int m, n, i, j, k, count = 0;
printf("请输入范围m和n:");
scanf("%d%d", &m, &n);
for(i = m; i <= n; i++)
{
j = i / 100; //取百位数
k = i % 100; //取十位和个位数
if(i == j*j*j + (k/10)*(k/10)*(k%10)*(k%10)*(k%10)) //判断是否为水仙花数
{
printf("%d ", i);
count++;
}
}
printf("\n%d到%d范围内的水仙花数个数为:%d\n", m, n, count);
return 0;
}
```
程序运行结果如下:
```
请输入范围m和n:100 999
153 370 371 407
100到999范围内的水仙花数个数为:4
```
程序的大体思路是:首先输入范围m和n,然后通过for循环遍历这个范围内的所有三位数,分别取出百位、十位和个位数,判断是否为水仙花数,如果是则输出并计数。最后输出范围内的水仙花数个数。
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;
}
```
程序会要求用户输入两个数字,然后输出在这两个数字之间的所有水仙花数,并统计其个数。
阅读全文