这是我到目前为止所做的功能:
function divisor($number)
{
echo "Divisors of number : $number<br>";
for($i=1;$i<$number;$i++)
{
if ( ($number%$i)==0)
{
echo $i,',';
}
}
}
divisor("220");
这是函数的输出:
Divisors of number : 220<br>1,2,4,5,10,11,20,22,44,55,110,
除数之和将为284,这意味着数字220和284是友好数字
我不想总结我在函数中输入的数字的所有除数,我该如何实现?
答案 0 :(得分:0)
这可以通过对您的功能进行微调来完成。将所有除数存储在一个数组中。要打印以逗号分隔的除数列表,请使用implode()
。要计算数组中值的总和,请使用array_sum()
。很简单。
这是重写的功能:
function divisor($number)
{
$divisors = array(); // Initialize empty array
for ($i = 1; $i < $number; $i++)
{
if (($number % $i) == 0)
{
$divisors[] = $i;
}
}
echo "Divisors of number: " . implode(', ', $divisors) . "<br />";
echo "Total sum: " . array_sum($divisors) . "\n";
}
输出:
Divisors of number: 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110
Total sum: 284
答案 1 :(得分:0)
更快的解决方案也适用:
<?php
function get_div_sum($n)
{
for ($j = 1, $s = 0; $j <= $n; $j++)
for ($i = 1; $i <= $j; $i++)
if (!($j % $i))
$s += $i;
return $s;
}