数学趣题——完全数

如果一个数等于它的因子之和,就为完全数。求出1000以内的完全数

穷举法:(1)求出a的所有因子(2)检测所有因子和是不是等于a

   1: #include <stdio.h>
   2:  
   3: int factorSum(int a)            /*求a的因子和*/
   4: {
   5:     int i, sum = 0;
   6:     for(i=1;i<a;i++)
   7:         if(a%i == 0)            /*i是a的一个因子*/
   8:             sum = sum + i;    /*累加求和*/
   9:     return sum;            /*返回a的因子的和*/
  10: }
  11:  
  12: int perfextnumber(int a)        /*判断a是否是完全数*/
  13: {
  14:     if(a == factorSum(a)) return 1;
  15:     else return 0;
  16: }
  17:  
  18: int main()
  19: {
  20:     int a;
  21:     printf("There are following perfect numbers 1~1000 are:\n");
  22:     for(a=1;a<=1000;a++)
  23:     {                        /*寻找1-1000以内的完全数*/
  24:         if(perfextnumber(a))
  25:             printf("%d ",a);
  26:     }
  27: }
  28:  
posted @ 2010-05-26 10:17  红脸书生  阅读(371)  评论(0编辑  收藏  举报