“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1³+5³+3³,则153是一个“水仙花数”。
step1:我们先拆分这个数,得到它的次方数。
#include <stdio.h>
int main()
{
int i = 0;
for (i = 0; i < 100000; i++)
{
int tmp = i;
int count = 1;
while (tmp /= 10)
{
count++;
}
}
step2:因为在第一段代码中,tmp已经被除尽为0了,所以我们要重新给tmp赋值,接着我们使用pow函数来计算次方。
tmp = i;//重新赋值!
while (tmp)
{
int sums = 0;
sums += pow(tmp % 10, count);
tmp /= 10;
}
if (sums == i)
{
printf("%d ", sums);
}
step2图解:
最终代码:
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for (i = 0; i <= 100000; i++)
{
int sums = 0;
int tmp = i;
int count = 1;
while (tmp /= 10)
{
count++;
}
tmp = i;
while (tmp)
{
sums += pow(tmp % 10, count);
tmp /= 10;
}
if (sums == i)
{
printf("%d ", sums);
}
}
return 0;
}
因为调用了pow函数,所以头文件要加上#include <math.h>
输出结果展示:
关于pow函数如何使用,这个链接里讲的非常清晰:pow函数的使用方法及注意事项
如果大家还有不懂的地方,或者我哪里有错误,欢迎大家评论指出,我会尽我所能去解答的!!