Было время захотелось позаморачиваться. Идея заключается в том, чтобы переложить на PHP нахождение корня квадратного из числа с помощью старого школьного метода с разбиением числа по 2 цифры слева направо. При этом, как можно меньше использовать "готовые" математические функции языка. Пока получается так:
PHP:
скопировать код в буфер обмена
<html>
<head>
<meta charset="utf-8"></head>
<form method="post"><input type="text" name="d"><input type="submit" value="calculate"></form>
<?PHP
function sqt($d) {
while($null>0) {
$null=$null-2;
}
if ($null==0) {
}
else {
}
$full=$arr[0];
$b=1;
while(true) {
$b++;
$a=$b*$b;
if($a>=$full) {
break;
}
}
if($b*$b==$full ) {
echo $b;
}
else {
$b-=1;
echo ' Roughly: ' . $b;
}
}
sqt($d);
}
?>
</html>
Спойлер (Отобразить)
Тот же код но с комментариями:
PHP:
скопировать код в буфер обмена
<html>
<head>
<meta charset="utf-8"></head>
<form method="post"><input type="text" name="d"><input type="submit" value="calculate"></form>
<?PHP
/*Функция нахождения начала любого корня*/
function sqt($d) {
/*Считаем количество символов в значении*/
/*Отнимает по 2 в цикле*/
while($null>0) {
$null=$null-2;
}
/*Если 0, то количество символов четное*/
if ($null==0) {
/*тогда разбить на массив по 2 символа*/
}
else
/*или по 1 символу*/
/*Переменная - первое значение массива*/
$full=$arr[0];
$b=1;
/*Находим значение*/
while(true) {
$b++;
$a=$b*$b;
/*Прервем, если значение превысило значение первого (или первых двух) символа*/
if($a>=$full) {
break;
}
}
/*Если равно, то из первых символов можно извлечь корень сразу*/
if($b*$b==$full ) {
/*То есть первое число корня равно количество итераций*/
echo $b;
}
else {
/*Иначе отнимем единицу от количества итераций - это и будет первое число кв. корня*/
$b-=1;
echo ' Roughly: ' . $b;
}
}
sqt($d);
}
?>
</html>
Дальше по идее: нужно ввести еще одну переменную, значением которой будет первое найденное число, только удвоенное (потом опять надо будет удваивать). Затем надо сносить по две цифры к остатку от первых вычислений (видимо, конкатенация). Далее искать такое число (О, Господи!), которое надо приклеить к тому удвоенному, а потом полученное еще и умножить на это число, при том так, чтобы результат был близким или равным снесенному числу : ) Вот такая заморочка.
Хотя, похоже, решаемо.
Но мне пока надоело.
Картинка на всякий случай, проясняющая суть метода:
http://fotki[dot]yandex[dot]ru/next/user[dot][dot][dot]0995/view/525442