用于简单算法尝试
时间:2021-07-01 10:21:17
帮助过:21人阅读
如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。
- //判断是否是完数
- function is_factor($factor)
- {
- if($factor<1) return false;
- if($factor==1) return array(1);
- if(!isset($arr)){$arr=array();}
- for($i=1;$i<$factor;$i++){
- if($factor%$i==0){
- $arr[]=$i;
- }
- }
- $len=count($arr);
- $i=0;$temp=0;
- while($i<$len) {$temp+=$arr[$i];$i++;}
- if($temp==$factor) return $arr;
- else return false;
- }
- $factor=6;
- $count=0;
- for($i=1;$i<=$factor;$i++)
- {
- $res=is_factor($i);
- $len=count($res);
- if(is_array($res)){
- echo $i.'=';
- for($j=0;$j<$len;$j++){
- if($j!=0) echo '+'.$res[$j];
- else echo $res[$j];
- }
- $count++;
- echo '
'; - }
- }
- if($count==0) echo '不存在完数!';
-
|