Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Извлечение квадратного корня. PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вернее, нахождение первой цифры :)
dcc0
Отправлено: 29 Августа, 2014 - 22:26:29
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Было время захотелось позаморачиваться. Идея заключается в том, чтобы переложить на PHP нахождение корня квадратного из числа с помощью старого школьного метода с разбиением числа по 2 цифры слева направо. При этом, как можно меньше использовать "готовые" математические функции языка. Пока получается так:


PHP:
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3.  <meta charset="utf-8"></head>
  4.  <form method="post"><input type="text" name="d"><input type="submit" value="calculate"></form>
  5. <?PHP
  6.  
  7.     function sqt($d)  {
  8.  
  9.  $null=strlen($d);
  10.  
  11.  
  12.  while($null>0) {
  13.  
  14.     $null=$null-2;
  15.   }
  16.  
  17.    if ($null==0) {
  18. $arr=str_split($d, 2);
  19.  
  20.   }
  21.  
  22.  else  {
  23.  
  24.  $arr=str_split($d, 1);
  25.  
  26.  }
  27.  
  28. $full=$arr[0];
  29.  $b=1;
  30.  
  31. while(true) {
  32.  
  33. $b++;
  34.   $a=$b*$b;
  35.  if($a>=$full) {
  36.    break;
  37.  
  38.  }
  39. }
  40.  
  41. if($b*$b==$full ) {  
  42.  echo $b;
  43. }
  44.  
  45. else {
  46.  $b-=1;
  47.    echo ' Roughly: ' . $b;
  48. }
  49.  
  50. }
  51.  
  52.  
  53.  
  54. if(isset($_POST['d'])) {
  55.  
  56.  sqt($d);
  57.  
  58. }
  59.  
  60. ?>
  61.  
  62. </html>
  63.  

Спойлер (Отобразить)


Дальше по идее: нужно ввести еще одну переменную, значением которой будет первое найденное число, только удвоенное (потом опять надо будет удваивать). Затем надо сносить по две цифры к остатку от первых вычислений (видимо, конкатенация). Далее искать такое число (О, Господи!), которое надо приклеить к тому удвоенному, а потом полученное еще и умножить на это число, при том так, чтобы результат был близким или равным снесенному числу : ) Вот такая заморочка.
Хотя, похоже, решаемо.
Но мне пока надоело. Радость
Картинка на всякий случай, проясняющая суть метода:
http://fotki[dot]yandex[dot]ru/next/user[dot][dot][dot]0995/view/525442

(Отредактировано автором: 29 Августа, 2014 - 23:08:31)



-----
Март 2021. Бросил программирование
 
 Top
DelphinPRO
Отправлено: 29 Августа, 2014 - 22:33:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Из-за обилия абсолютно ненужных комментариев, код ужасно читается...
Зачем вы их столько налепили?
/*Отнимает по 2 в цикле*/ - глядя в код и так видно, что отнимается по 2 в цикле Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB