我最近在面试时练习了很多算法。我想知道是否有另一种方法可以解决这个问题。我用一种方式写它,我只是积极地增加它,因为我从基本数学知道两个负数相互乘以会得到一个正数,所以我只需要使满足条件的整数为负数。
有没有办法写这个优雅,你没有把两个负数乘以正数的知识?
<?php
# Z = {integers}
# B = {x:x, x is an element of Z, x^2 + 1 = 10}
$numNotFound = true;
$x = 0;
$b = [];
while ($numNotFound) {
if ($x*$x + 1 == 10) {
array_push($b, $x, $x*-1);
$numNotFound = false;
}
$x++;
}
echo json_encode($b); #[3, -3]
答案 0 :(得分:-1)
<强>更新强>
此解决方案不使用-1 * -1 = 1的事实。它将输出作为数组中第一个元素找到的第一个数字。如果x = -3那么[-3,3]或者如果x = 3 [3,-3]。
$numNotFound = TRUE;
$x = 0;
$b = [];
Do{
if ((pow($x, 2) + 1) === 10) {
array_push($b, $x, 0 - $x);
$numNotFound = FALSE;
}
$x++;
}while($numNotFound);
echo json_encode($b); //[3, -3]