水仙花数
- 一.什么是水仙花数
- 二.如何获取一个数的每一位数
- 三.如何计算一个数有几位数
- 四.计算出所有的水仙花数
一.什么是水仙花数
水仙花数的定义:“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^ 3+5^ 3+3^3,则153是一个“水仙花数”。
二.如何获取一个数的每一位数
这里我们假设一个数是153,那么如何获取,每一位数呢,下面来看解释
153
153%10=3
获取个位
153/10=15
15%10=5
获取十位
15/10=1
1%10=1
获取百位
1/10=0
void print(int n)
{if (n > 9){print(n /10);}printf("%d ", n % 10);
}int main()
{int n = 0;scanf("%d", &n);print(n);return 0;
}
运行结果:
三.如何计算一个数有几位数
还是和上面一样,假设这个数是153,那该如何获取是有几位数呢
153
153/10=15
15/10=5
5/10=0
一共除了3次,所以就是三位数
int main()
{int m;scanf("%d", &m);int sum = m;int count = 0;while (m!=0){m /= 10;count++;}printf("%d 有:%d位数", sum, count);return 0;
}
运行结果:
四.计算出所有的水仙花数
这里我们可以使用i的范围来控制题目所要求的条件
int main()
{for (int i = 0; i < 100000000; i++){int sum = 0;int tmp = i;int count = 0;while (tmp != 0){tmp /= 10;count++;}tmp = i;while (tmp != 0){sum += pow(tmp % 10, count);tmp /= 10;}if (sum == i){printf("%d位数是: %d\n",count, i);}}return 0;
}
运行结果: