|
Что-то |
|
Вот попытка найти решение в лоб (методом деления отрезка пополам)
|
|
Еще один вариант решения, покороче и несколько скоростнее. Выдает число b, для которого b*b = N. Используется итерационный алгоритм Ньютона: b=(b+N/b)/2.
compareTo(BigInteger.ONE.divide(new BigInteger("100000000"))
(7 Мар 16:40)
Selden
|
|
Вы можете написать код для вычисления квадратного корня самостоятельно. Например, используя простейший алгоритм. Если нужна большая скорость, есть и более оптимальные алгоритмы. Образец:
Непонятно :( откуда поле И надо в такой последовательности читать: берем поле number, применяем метод divide, потом применяем метод add, потом применяем метод divide?
(21 Фев 11:44)
spbsmile
1
Поправил, вместо BigIntegerTWO - BigInteger.valueOf(2). Читать слева направо.
(21 Фев 11:52)
Привет
что делает trial ? какое значение не подаю, результат не меняет.
(27 Фев 12:14)
hitman249
trial -- пробное значение. Чем ближе к значению корня, тем меньше итераций. Если уж очень хочется, то можно взять что нибудь типа
Но BigInteger.ONE -- тоже вполне себе приближение.
(28 Фев 8:43)
alexlz
а что насчёт вычисления произвольных целочисленных корней?
(28 Фев 11:51)
hitman249
@hitma249 Непонятен вопрос. Что значит "произвольные целочисленные корни" и чем не подходить функция от @Привет?
(28 Фев 11:57)
alexlz
to alexlz тем, что кроме расчета квадратного корня он больше ничего не умеет.
(28 Фев 13:01)
hitman249
@hitman249 так что надо-то? Какие корни, какие числа (только положительные или нет), какой результат должен быть в случае, если целого корня n степени у числа нет? А то претензия к sqrt насчёт корней разных степеней весьма странная
(28 Фев 13:13)
alexlz
to alexlz,
(28 Фев 14:02)
hitman249
показано 5 из 9
показать еще 4
|
Вообще пишу сканер для поиска корней в числах длинной от 9 - 100 цифр. Берётся число от 9 знаков и циклом проверяется на корни от 2 - 100 скорость критична.