Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2507480
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-04-07 08:41:15

    如果一个三位数等于各位数字的立方和,则称这个数为水仙花数。例如: 407 = 4 * 4 * 4 + 0 * 0 * 0 + 7 * 7 * 7,因此407就是水仙花数。编写程序,找出全部的水仙花数。
    由于水仙花数是三位数,因此我们只要穷举100到999区间中的每一个数。然后找出这个数的个位,十位,百位数字,求其立方和,和原数进行比较。即可知道数字是否是水仙花数,编写代码如下:
  1. #include <stdio.h>

  2. int IsNarcissus(int n);
  3. void Narcissus(void);

  4. int main(int argc, char *argv[])
  5. {
  6.   printf("the narcissus numbers below are\n");
  7.   Narcissus();
  8.  
  9.   return 0;
  10. }

  11. void Narcissus(void)
  12. {
  13.   int i;
  14.   for(i=100; i<1000; i++)
  15.     if(IsNarcissus(i))
  16.       printf("%d ",i);

  17.   printf("\n");
  18. }

  19. int IsNarcissus(int n)
  20. {
  21.   int sum = 0,tmp = n;
  22.   int m = 0;
  23.   while(tmp > 0)
  24.   {
  25.     m = tmp % 10;
  26.     sum += m * m * m;
  27.     tmp = tmp / 10;
  28.   }

  29.   if(sum == n)
  30.     return 1;
  31.   else
  32.     return 0;
  33. }
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out 
the narcissus numbers below are
153 370 371 407

阅读(1454) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~