PHP 中的数字对加法
今天我正在帮我儿子做数学作业,我们遇到了一个问题,要求他找出两个数字的组合,这些数字相加等于一个给定的数字(他只有6岁,所以这是很好的数学练习)。这让我开始思考如何计算两个数字相加得到另一个数字的所有可能方式。
唯一必须遵守的规则是,做1+11=12和11+1=12之类的事情基本上是一样的,所以会作弊。在这种情况下,我意识到在创建列表时只需要使用一半的数字,因此对于数字12,可以使用数字0-6找到每个组合,因为在此之后我们开始复制总和,只需交换命令。
这是我想出的功能。
function pairAdditions($number) { $count = 0; $sums = ''; foreach (range(0, ($number/2)) as $part) { ++$count; $sums .= $part . ' + ' . ($number - $part) . ' = ' . $number . "\n"; } print $count . " numbers found that add up to " . $number . ".\n" . $sums; }
细心的您可能已经注意到,range()上面的函数可能会时不时地被赋予一个奇数。这无关紧要,因为range()函数中的默认步长为1,因此在创建数组时它只会上升到最高的整数。
我已经运行了一些测试来显示该函数产生的输出。
pairAdditions(5);
3 numbers found that add up to 5. 0 + 5 = 5 1 + 4 = 5 2 + 3 = 5pairAdditions(6);
4 numbers found that add up to 6. 0 + 6 = 6 1 + 5 = 6 2 + 4 = 6 3 + 3 = 6pairAdditions(12);
7 numbers found that add up to 12. 0 + 12 = 12 1 + 11 = 12 2 + 10 = 12 3 + 9 = 12 4 + 8 = 12 5 + 7 = 12 6 + 6 = 12pairAdditions(17);
9 numbers found that add up to 17. 0 + 17 = 17 1 + 16 = 17 2 + 15 = 17 3 + 14 = 17 4 + 13 = 17 5 + 12 = 17 6 + 11 = 17 7 + 10 = 17 8 + 9 = 17pairAdditions(20);
11 numbers found that add up to 20. 0 + 20 = 20 1 + 19 = 20 2 + 18 = 20 3 + 17 = 20 4 + 16 = 20 5 + 15 = 20 6 + 14 = 20 7 + 13 = 20 8 + 12 = 20 9 + 11 = 20 10 + 10 = 20
这可能看起来很简单,但它让我6岁的孩子感到惊讶,并在事后帮助他检查了答案:)