Существует несколько способов найти целочисленные квадратные корни, используя только целочисленную арифметику. Например, this one. Это делает интересным чтение, а также очень интересную теорию, особенно для моего поколения, где такие методы не так полезны.Вычислить N-й корень с целочисленной арифметикой
Главное, что он не может использовать арифметику с плавающей запятой, чтобы исключить метод newtons и его деривации. Единственный другой способ узнать корни - это биномиальное расширение, но для этого также требуется арифметика с плавающей запятой.
Какие методы/алгоритмы существуют для вычисления интегральных n-го корня с использованием только целочисленной арифметики?
Редактировать: Спасибо за все ответы. Все они кажутся немного более интеллектуальными испытаниями и улучшениями. Нет ли лучшего способа?
Edit2: Хорошо, так что казалось бы, нет разумного способа сделать это без проверки/улучшения и метода newtons или двоичного поиска. Может ли кто-нибудь представить сравнение двух в теории? Я провел несколько тестов между ними и нашел их очень похожими.
Каков ваш требуемый диапазон входных значений? –
@PaulR, В идеале это может быть расширяемо, но я думаю, вы можете предположить, что и база, и число будут 32-битными (без знака) целыми числами. – Matt
Какие целые операции вы разрешаете? Квадратные корни - особый случай, потому что их можно извлечь, используя только сложение, вычитание и сдвиги. – Neil