加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用C&php语言编程:输出2~100之间所有完数,完数是指该数各因子之和等于该数本身

(2013-10-25 10:53:25)
标签:

之间

语言

之和

个数

因子

分类: IT_知识
用C&php语言编程:输出2~100之间所有完数,完数是指该数各因子之和等于该数本身

仅供参考,1000以内的:



//一个数如果恰好等于它的因子之和,这个数就称为“完数”。

//例如6的因子为1、2、3,而6=1+2+3,因此6是“完数”,

//编程找出1000以内的所有完数:



#include 



void main()

{



    int x, i, sum;

    x = 1;

    while(x <= 1000)  {       //x要从1到1000循环。

      sum = 0;                //每算一个新的x时,sum要清0

      for(i = 1; i <= (x/2); i++)  if(x % i == 0) sum += i; //如果i是x的因子,sum加上i

      if(x == sum)  printf("%d\n", x); //如果因子和等于本身

      x++;

    }                  

}



程序运行结果:

6

28

496

<?php

public function factorSum( $number )

{

        if( $number < =1 ) return FALSE ;

      $sum = 1 ; //因为1是任何数的因子 所以 1

  for(  $i= 2 ; $i<= ($number/2)  ;$i++ )  //$number/2 因为因子 最大不超过次数的一半 大于一半 那么乘以的数要比1大 比2小 这种情况是不可能出现滴!

  {

             if(  ($number%$i) === 0  )

            {

                     $sum += $i ;

          }

     }

     if( $sum === $number )

        {

             return $number ;

      }

     else

  {

             return 0;

     }

}

      

for( $i=2 ; $i<=1000 ; $i++ )

{

     if( ($this->factorSum(  $i ) ) >=1 )

    {

             echo $i . '<br/>' ;

     }

}



此算法的复杂度是 O(n^2)








0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有