为了账号安全,请及时绑定邮箱和手机立即绑定

返回所有整数除数或返回字符串 '(integer) is prime' 如果它是素数的函数

返回所有整数除数或返回字符串 '(integer) is prime' 如果它是素数的函数

PHP
蓝山帝景 2022-07-09 16:59:37
嘿到目前为止我得到的解决方案给了我一些整数的预期结果,但不满足测试用例,(codewars https://www.codewars.com/kata/find-the-divisors/train/php)function divisors($integer) {    $array = [];    if($integer<=1)        return false;    for($i = 2 ; $i <= sqrt($integer) ; $i++){        if($integer% $i == 0){            array_push($array,$i);        }         }    if (empty($array)){        return $integer. " is prime";    }else{        return implode( ", ", $array );    }}任何帮助表示赞赏,现在我收到以下错误3' does not match expected type "array"
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

以下解决方案,通过了所有测试用例


function divisors($integer) {

    $array = [];


     if($integer >1)

    {

      for($i = 2 ; $i < $integer ; $i++){

         if($integer% $i == 0){

            $array[] = $i;

         }    

      }


        if (empty($array)){

            return $integer. " is prime";

        }

        else{

        return $array;

        }


    }//close if($integer>1)


  }//END function divisors


查看完整回答
反对 回复 2022-07-09
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您将很快终止循环,只需查看这些数字的 sqrt() 是什么。


而是在整数的一半处终止循环


function divisors($integer) {


    $array = [];


    if($integer<=1)

        return false;


    $end = $integer / 2;

    for($i = 2 ; $i <= $end; $i++){

        if($integer % $i == 0){

            $array[] = $i;      // more efficient than array_push if youare just pushing on thing

        }     

    }


    if (empty($array)){

        return $integer. " is prime";

    }else{

        return $array;

    }

}

结果


2, 3, 4, 6

5

13 is prime


查看完整回答
反对 回复 2022-07-09
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号