水仙花数
- 一.什么是水仙花数
- 二.如何获取一个数的每一位数
- 三.如何计算一个数有几位数
- 四.计算出所有的水仙花数
一.什么是水仙花数
水仙花数的定义:“水仙花数”是指一个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;
}
运行结果: