Ваше завдання - обчислити квадратний корінь додатного цілого числа, не використовуючи математичних операторів для зміни числа, таких як:
- Встановлення змінної (напр. SquareRoot = 5)
- Додавання (A + B)
- Віднімання (AB)
- Множення (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, і по-друге, тому що для збільшення цього високого часу знадобиться певний час.