2 回答

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

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
- 2 回答
- 0 关注
- 102 浏览
添加回答
举报