Как вынести число n из под квадратного корня, не используя математические функции?

Добрый день!
Нам в институте на предмете (Алгоритмика и структура данных) дали заданее.
Составить алгоритм который будет считать число из под квадратного корня без использования Мат. функции.
Смотрел в интернете там всегда используют (sqrt).
За любую помощь спасибо
  • Вопрос задан
  • 163 просмотра
Решения вопроса 3
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Самое банальное, что приходит в голову - последовательно в цикле перебирать числа от одного до n. Каждое число умножать само на себя, пока не получится заданное число.
Ответ написан
dom1n1k
@dom1n1k
Я не знаю, куда вы смотрели в интернете, потому что это гуглится в одно касание.
Хотя бы википедия: https://en.wikipedia.org/wiki/Methods_of_computing...
Ответ написан
Комментировать
@AquiHostStrider
А какие функции не считаются «математическими»? Деление можно или нельзя?
Найдём сначала все делители и запихнём в массив d.

целое i=0, k=2, l=n, массив целое d[n/2];
пока k<l/2 {
 если k*(l/k)==l { l=l/k; d[i]=k } иначе { k=k+1 }
 i=i+1
}
d[i]=l


Потом перебираем по очереди все элементы полученного массива, в котором будут делители n. Если текущий элемент равен следующему, то берём его как делитель выносимой части и следующий элемент в массиве пропускаем. Если нет, то берём его как делитель невыносимой из-под корня части, и следующий элемент не пропускаем. Если он вообще равен нулю, то значит, что массив закончился, и нужно вернуть результат -- вынесенное число и подкорневой остаток.

P.S. Конечно, можно сделать красиво -- всё в одном цикле, сразу вычисляя выносимое и подкорневой остаток. Приведённый неоптимальный алгоритм -- первое что в голову пришло. Дальнейшую оптимизацию, думаю, осилите сами.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы