Я пишу калькулятор без использования десятичных знаков (поддерживает только рациональные числа), но я хотел бы иметь возможность сделать версию квадратного корня.
Когда функция квадратного корня нажата (скажем) для числа 12, я хотел бы просто упростить/"уменьшить" квадратный корень и вернуть 2*sqrt(3) -- на него в (2*2) * 3 и извлечение sqrt (2 * 2) как 2.
Я использую biginteger, который имеет очень хороший метод gcd() и метод pow(), который ограничен положительными параметрами (что имеет смысл, если вы не пытаетесь сделать именно то, что я пытаюсь сделать.
Я мог бы придумать несколько итерационных способов сделать это, но они могут занять некоторое время с числами в диапазоне сотен цифр.
Я надеюсь, что есть какой-нибудь симпатичный, простой, не повторяющийся трюк, с которым я не сталкивался.
Просто чтобы уточнить: у меня есть намерение добавить мнимые числа, поэтому я планирую получить такие результаты:
17 + 4i √3
-----------
9
Без длинных потоков десятичных знаков.
isProbablyPrime
, что дает вам представление о том, что вы получаете, когда используете его. Это статистический тест, и он не дает однозначного ответа. Возможно, априорное представление простого фактора не было преждевременной оптимизацией. :) - person Ted Hopp   schedule 22.06.2011