Ваша задача - вычислить квадратный корень из натурального числа без использования математических операторов для изменения числа, например:
- Установка переменной (например, squareRoot = 5)
- Дополнение (A + B)
- Вычитание (АБ)
- Умножение (A * B)
- Отдел (A / B)
- Квадрат, куб, четвертый и т. Д. Корни
- Экспоненты
Операторы сравнения (такие как <,>, == и т. Д.) Не считаются «математическими операторами» для целей этого вопроса и допускаются, если они не изменяют значение переменной.
Единственный оператор, который вы можете использовать - это ++. Имеются следующие исключения:
- При желании вы можете инициализировать переменную, установив ее в 0.
- Если ваш язык не включает синтаксис ++, вы можете использовать эквивалентный синтаксис, такой как foo + = 1 или foo = foo + 1
- Квадратный корень должен быть рассчитан по крайней мере на 6 цифр после десятичной точки (место в сто тысяч) и выведен как целое число десятичных дробей (например, если я введу 2, оно может выйти как 14142135624 или 1414213 в зависимости от округления) , Округление вверх или вниз не важно.
Пользовательские функции не допускаются. Кроме того, моделирование функций с помощью goto также не допускается.
Мне интересно посмотреть, что все представляют! Удачного кодирования!
ПОЯСНЕНИЯ
Уточните, что число является положительным целым числом. Вы можете сделать код, который будет делать любое число, но это не обязательно.
РАЗЪЯСНЕНИЕ № 2
Уточнить, что операторы сравнения разрешены.
РАЗЪЯСНЕНИЕ № 3
Сложение, вычитание, умножение, деление и функции на номера изменения не допускаются на всех , независимо от того, являются ли они сохраняются в переменной или нет. Я сожалею, что это делает недействительными пару существующих ответов, но я хотел определить эту группу операторов с помощью «изменить число», чтобы предотвратить ответы троллей (например, я только использовал функцию sqrt (), вы только запретили добавление, умножение, деление и вычитание). Извините за путаницу.
РАЗЪЯСНЕНИЕ № 4
Уточните, что нам нужно как минимум 5 цифр. 10 цифр заставили код работать долго.
while r*r<n*10e20:r+=1
- довольно тривиальна. Кроме того, вы можете рассмотреть вопрос о снижении требуемой производительности до 10 ^ 8 или около того. Во-первых, потому что 10 ^ 10 больше, чем 2 ^ 31, а во-вторых, потому что потребуется некоторое время, чтобы увеличить этот максимум.