如何判断水仙花数?

水仙花数是指一个n位数的个位数字的n次方之和恰好等于这个n位数,那么这个数就是水仙花数。如:那么,如何用编程语言来判断水仙花数呢?

读者最好代入一个数,进行判断。

如果不知道这个数是几位数,则应该先进行判断。假设这个数是n,用count来表示位数,当n不断除以10时,用前一次得到的数除以10,只有除到个位上时,商才为0。而每除以一次10,当商不为0时,count就加1。所以可以用一个while循环来判断有几位数,先设tmp=i,判断条件即为tmp/10,条件为真,count++,并把上次tmp/10的值放到tmp里;条件为假,跳出。

知道了这个数是几位数后,再进行求和判断。令tmp=i,先求这个数各位数上的数字,tmp%10是个位上的数字,再让tmp=tmp/10,当tmp为 0时,说明已经求出了最高位;不为0时,继续让tmp%10,每求一次数字,就把这个数字的count方之和放到sum里。

现在假设判断从1~10000之间的水仙花数。

#include<stdio.h>
#include<math.h>
int main( )
{
int n=0;
for(n=1;n<10000;n++)
{
int count=1;

                int tmp=n;

                double sum=0;

//1.判断n是几位数
while(tmp/10)
{
count++;
tmp=tmp/10;
}
//2.求n的各位数的count次方之和
tmp=n;//在第一步中,tmp已经发生变化,先初始化。
while(tmp)
{
sum+=pow(tmp%10,count);//tmp%10用来求各位数上的数字。
tmp=tmp/10;
}
if(sum==n)

{
printf("%d ",n);
}
}
printf("\n");
return 0;
}

猜你喜欢

转载自blog.csdn.net/smell201611010513/article/details/79683764