Php 函数,该函数返回所有整数';s除数或返回字符串';(整数)是素数';如果是质数

Php 函数,该函数返回所有整数';s除数或返回字符串';(整数)是素数';如果是质数,php,Php,嘿,到目前为止,我得到的解决方案给出了一些整数的预期结果,但不满足测试用例(codewars) 您将很快终止循环,只需看看这些数字的sqrt()是什么 将循环终止在整数的一半处 function divisors($integer) { $array = []; if($integer<=1) return false; $end = $integer / 2; for($i = 2 ; $i <= $end; $i++){

嘿,到目前为止,我得到的解决方案给出了一些整数的预期结果,但不满足测试用例(codewars)


您将很快终止循环,只需看看这些数字的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;
    }
}

感谢大家的所有投入,下面的解决方案,通过了所有的测试用例

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
函数除数($integer){
$array=[];
如果($integer>1)
{
对于($i=2;$i<$integer;$i++){
如果($integer%$i==0){
$array[]=$i;
}    
}
if(空($array)){
返回$integer.“是素数”;
}
否则{
返回$array;
}
}//如果($integer>1)关闭
}//端函数除数

良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您为自己的利益调试代码。您可能会被要求在几周/几个月内修改此代码,最终您将感谢我。非常感谢您指出,它给出了正确的结果,但仍然给了我失败的测试用例,说明“3,5”与预期的类型“array”不匹配。请尝试返回数组,而不是分解的数组
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
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