首页 > 其他 > 详细

如何找出 1000 以内的「完数」

时间:2020-05-30 09:59:52      阅读:42      评论:0      收藏:0      [点我收藏+]

题目描述:

如果一个数恰好等于它的因子之和,那么这个数就被称为「完数」,如 6=1+2+3。编程找出 1000 以内的所有「完数」。

分析与解答:

外层循环 998 次,每次循环得到的 $i 传入下个循环内,内部循环求解出符合 $i 整除 $k 等于 0 的数,如果能够整除,那么说明 $k 是 $i 的一个因子,则用 $sum 累加,直到 $sum+1 等于 $i 条件成立,说明 $i 是一个「完数」。需要注意的是,因为 $sum 求解出的因子是不包括 1 的,所以还需要额外的加 1 到 $sum 中,并且 $i 的一个因子是不会大于 $i/2 的,所以内部循环判断是否继续循环的条件为 $i/2。
实现代码如下:

<?php
    for($i=2;$i<1000;$i++){
        $sum = 0;
        for($k=2;$k <= $i/2; $k++){
            if($i%$k==0){
                $sum +=$k;
            }
        }

        if($sum + 1 == $i){
            echo $i." ";
        }
    }

程序的运行结果为

6 28 496

如何找出 1000 以内的「完数」

原文:https://www.cnblogs.com/hardy-wang/p/12990665.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!