По-цифровое извлечение квадратного корня - QBasic

Узнай цену своей работы

Формулировка задачи:

Дано натуральное число. Требуется извлечь (вычислить) по одной цифре квадратный корень. Алгоритм основан на формуле 1. Согласно этой формуле, число разбивается по две цифры справа налево. 2. Начальное значение числа а определяется сравнением с квадратами чисел 3. После чего вычисляется каждая цифра b отдельно, одна за другой. Вопросы 1. Можно ли упростить прилагаемую программу? 2. Как обобщить данную программу на вещественные числа?

Решение задачи: «По-цифровое извлечение квадратного корня»

textual
Листинг программы
CLS
 
DIM d AS LONG
DIM d2 AS LONG
DIM sqrt AS LONG
DIM a(9) AS LONG
 
d = 3000000
n = INT(LOG(d) / LOG(100))
m = n
 
DO WHILE d > 0
   a(i) = d \ 100 ^ n
   d = d MOD 100 ^ n
   i = i + 1
   n = n - 1
LOOP
 
d2 = a(0)
i = 1
DO WHILE i ^ 2 > d2
   i = i + 1
LOOP
d2 = d2 - i
sqrt = i
 
i = 1
DO
   d2 = 100 * d2 + a(i)
   b = 20 * sqrt
   j = 0
 
   DO UNTIL (b + j) * j > d2
      j = j + 1
   LOOP
 
   j = j - 1
   d2 = d2 - (b + j) * j
   sqrt = 10 * sqrt + j
   i = i + 1
LOOP UNTIL d2 > 20000000
 
m1 = INT(LOG(sqrt) / LOG(10))
PRINT sqrt * 10 ^ (m - m1)
END

Объяснение кода листинга программы

В этом коде задача сводится к вычислению квадратного корня числа d, представленного в двоичной системе счисления, с помощью цикла DO-LOOP.

  1. Переменные:
    • d - исходное число
    • n - степень двойки, полученная путем деления логарифма d по основанию 100 на логарифм 100
    • m - копия значения n
    • a(i) - массив для хранения остатков от деления d на 100 в степени n
    • d2 - текущее значение d, записанное в двоичной системе счисления
    • i - счетчик для перебора массива a(i)
    • b - множитель для вычисления значения d2
    • j - счетчик для вычисления квадратного корня d2
  2. Циклы:
    • Внешний цикл DO-LOOP используется для вычисления остатков от деления d на 100 в степени n и записи их в массив a(i). Значение d уменьшается на каждом шаге цикла, пока оно не станет меньше 100 в степени n.
    • Внутренний цикл DO-LOOP используется для вычисления квадратного корнера d2. Значение i увеличивается на каждом шаге цикла, пока (b + j) * j не станет больше d2.
  3. Вычисление квадратного корня:
    • Значение d2 уменьшается на (b + j) * j на каждом шаге внутреннего цикла DO-LOOP.
    • Значение sqrt увеличивается на 10 * j на каждом шаге внешнего цикла DO-LOOP.
  4. Вывод результата:
    • Значение sqrt умножается на 10 в степени (m - m1) и выводится на экран. Здесь m1 - это целая часть логарифма sqrt по основанию 10.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.6 из 5
Похожие ответы