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

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-04-14 18:06:01

    如果一个数恰好等于它的因子之和,那么这个数就被成为完全数。例如6 = 1 + 2 +3。编写程序求出1-1000以内的完全数。
    我们知道,如果求出1-1000之内的完全数,我们肯定可以想到,使用穷举法,从1开始到1000判断每个数是否是完全数,因此我们对与每一个数,进行判断,该数是否是完全数,而完全数,需要我们把这个数的所有因子求出,然后将所有因子进行相加,与原数想比较,即可判断该数是否是完全数。因此我们编写两个函数,一个用来返回一个数的因子之和,一个判断该数是否为完全数。代码如下:
  1. #include <stdio.h>

  2. int factorsum(int n)
  3. {
  4.   int i,sum = 0;
  5.   for(i=1; i<n; i++)
  6.     if(n%i == 0)
  7.       sum += i;

  8.   return sum;
  9. }

  10. int perfexNumber(int n)
  11. {
  12.   if(n == factorsum(n))
  13.     return 1;
  14.   else
  15.     return 0;
  16. }

  17. int main(int argc, char *argv[])
  18. {
  19.   int i;
  20.   printf("there are following perfect number 1~1000 are:\n");
  21.   for(i=1; i<1000; i++){
  22.     if(perfexNumber(i))
  23.       printf("%d ",i);
  24.   }

  25.   printf("\n");
  26.   return 0;
  27. }
程序执行结果:
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out 
there are following perfect number 1~1000 are:
6 28 496

阅读(2079) | 评论(0) | 转发(0) |
0

上一篇:数字的全排列

下一篇:亲密数

给主人留下些什么吧!~~