如果一个三位数等于各位数字的立方和,则称这个数为水仙花数。例如: 407 = 4 * 4 * 4 + 0 * 0 * 0 + 7 * 7 * 7,因此407就是水仙花数。编写程序,找出全部的水仙花数。
由于水仙花数是三位数,因此我们只要穷举100到999区间中的每一个数。然后找出这个数的个位,十位,百位数字,求其立方和,和原数进行比较。即可知道数字是否是水仙花数,编写代码如下:
- #include <stdio.h>
-
-
int IsNarcissus(int n);
-
void Narcissus(void);
-
-
int main(int argc, char *argv[])
-
{
-
printf("the narcissus numbers below are\n");
-
Narcissus();
-
-
return 0;
-
}
-
-
void Narcissus(void)
-
{
-
int i;
-
for(i=100; i<1000; i++)
-
if(IsNarcissus(i))
-
printf("%d ",i);
-
-
printf("\n");
-
}
-
-
int IsNarcissus(int n)
-
{
-
int sum = 0,tmp = n;
-
int m = 0;
-
while(tmp > 0)
-
{
-
m = tmp % 10;
-
sum += m * m * m;
-
tmp = tmp / 10;
-
}
-
-
if(sum == n)
-
return 1;
-
else
-
return 0;
-
}
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out
the narcissus numbers below are
153 370 371 407
阅读(1541) | 评论(0) | 转发(0) |