【发布时间】:2021-01-01 18:52:30
【问题描述】:
我有这个功能:
function listSquared($m, $n)
{
$result = [];
$integers = range($m, $n);
foreach($integers as $number){
$divisors = [];
$int_of_num = range(1, $number);
foreach($int_of_num as $number2){
if ($number % $number2 === 0) {
$divisors[] = $number2;
}
}
$result[] = $divisors;
}
$all_div = array_combine($integers, $result);
$result_sum = [];
foreach($all_div as $key => $value){
$sum = 0;
foreach($value as $num){
$sum += $num ** 2;
}
$sqrt = sqrt($sum);
if($sqrt == (int)$sqrt){
$result_sum[] = [$key, $sum];
}
}
return $result_sum;
}
运行良好,但执行需要花费大量时间。任何想法如何优化这段代码?(使用记忆)
输出示例:
listSquared(1, 250)
Array ( [0] => Array ( [0] => 1 [1] => 1 ) [1] => Array ( [0] => 42 [1] => 2500 ) [2] => Array ( [0] => 246 [1] => 84100 ) )
附:这个函数搜索一个整数,除数的平方和将是一个整数。
【问题讨论】:
-
你能给出一个预期输出的示例代码执行吗?
-
请详细说明问题陈述。不清楚你在做什么。
-
如何优化?速度?内存使用情况?可读性?
-
@Mast 我认为我需要优化内存使用。
标签: php loops optimization