Алгоритм поиска положительных и отрицательных целочисленных квадратных корней (без заданных границ)

Недавно я практиковал много алгоритмов для интервью. Мне было интересно, есть ли другой способ решить эту проблему. Я написал это таким образом, что только положительно увеличиваю его, потому что из базовой математики я знаю, что два отрицательных числа, умноженные друг на друга, приведут к положительному числу, поэтому мне просто нужно сделать целое число, которое удовлетворяет условию, отрицательным.

Есть ли способ написать это элегантно где у вас не было знания умножения двух отрицательных чисел на положительный результат?

<?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. Оно выведет первое найденное число в качестве первого элемента в массиве. Если 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]
-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]