哪位大神能用php写出来下面三题,求代码?

你走开吧 2019-04-11 10:36:11
1、编程求10000之内的所有“完数”。所谓“完数”是指一个数恰好等于它的包括1在内的所有不同因子之和。例如,6是完数,因为6=1+2+3。 2、编程求所有的3位数素数,且该数是对称的。所谓“对称”是指还是一个数,倒过来还是该数。例如,375不是对称数,因为倒过来变成了573。 3、猴子吃桃问题。猴子第1天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了1个。第2天早上又将剩下的桃子吃掉一半,又多吃了1个。以后每天早上都吃了前1天剩下的一半,再多吃1个,到第10天早上想再吃时见只剩下1个桃子了。试编程求,第1天共摘下多少桃子。
...全文
348 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kang#kang 2019-04-15
  • 打赏
  • 举报
回复
$arr = array();
        for($i = 3; $i <= 10000; $i++) {
            $sum = 0;
            for($j = 1; $j <= $i; $j++) {
                $sum += $j;
                if($sum == $i) {
                    $arr[] = $i;
                    break;
                }
            }
        }
 
        var_dump($arr);
kang#kang 2019-04-15
  • 打赏
  • 举报
回复
完数 简单粗暴 有点不对感觉
 $arr = array();
        for($i = 3; $i <= 10000; $i++) {
            $sum = 0;
            for($j = 3; $j <= $i; $j++) {
                $sum += $j;
                if($sum == $i) {
                    $arr[] = $i;
                    break;
                }
            }
        }

        var_dump($arr);
u014567183 2019-04-12
  • 打赏
  • 举报
回复
引用 3 楼 葶苈子 的回复:
大神这两道题我在我的电脑上运行都有错误呀,我改了好多还是不对
什么错误? php版本多少?
wenfei307 2019-04-11
  • 打赏
  • 举报
回复
你应该求的是思路和算法,第三题最简单,写个循环就行了,算法按照二元一次方程的思路就能得到最后的值。但是效率上肯定有更好的解决办法,等大神来解答吧
你走开吧 2019-04-11
  • 打赏
  • 举报
回复
大神这两道题我在我的电脑上运行都有错误呀,我改了好多还是不对
u014567183 2019-04-11
  • 打赏
  • 举报
回复
//完数
$result = [];
for ($i=3; $i <10001 ; $i++) { //不知道是否考虑1这种特殊情况,而2又明显不符合要求 所以从3开始
    $arr = getFactor($i); //获取$i所有非1和本身因子
    if($arr){ //如果arr不为空
        if(array_sum($arr)+1==$i){ //判断和
            $result[] = $i;
        }
    }
}
//获取所有除1和本身之外的所有因子
function getFactor($num){ 
    $arr = [];
    for ($i=2; $i < $num; $i++) { //不考虑因子为1的情况
        if($i*$i>$num){ //尽量降低循环次数 (因为在$num/$m = $n 中假设$m为min($m,$n),$n最小等于$m,所以$m不会比√$num大)
            break;
        }elseif($num%$i==0){ //如果$i为$num的因子
            $arr[] = $i;
            if($num/$i!=$i){ //$num/$i 也是$num的因子 如果因子$i*$i != $num 则将$num/$i也赋值给$arr
                $arr[] = $num/$i;
            }
        }
    }
    return $arr;
}

var_export($result);//完数

//3位数素数,且该数是对称的
$result1 = [];
for ($i=1; $i < 10; $i++) { //因为三位数第一位数字不为0所以从1开始
    for ($j=0; $j < 10; $j++) {  //三位数中间的数字可以取0-9
        $num  = (int)($i.$j.$i); //对称数
        $arr = getFactor($num); //获取对称数中是否有除1以外的因子
        if(!$arr){  //不存在则为质数
            $result1[] = $num;
        }
    }
}
var_export($result1);
1和2

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧