Su tarea es calcular la raíz cuadrada de un entero positivo sin utilizar ningún operador matemático para cambiar el número, como:
- Establecer una variable (ej. SquareRoot = 5)
- Suma (A + B)
- Resta (AB)
- Multiplicación (A * B)
- División (A / B)
- Raíces cuadradas, cúbicas, cuarta, etc.
- Exponentes
Los operadores de comparación (como <,>, ==, etc.) no se consideran "operadores matemáticos" a los fines de esta pregunta y se permiten siempre que no cambien el valor de una variable.
El único operador que puede usar es ++. Se establecen las siguientes excepciones:
- Si lo desea, puede inicializar una variable estableciéndola en 0.
- Si su idioma no incluye la sintaxis ++, puede usar una sintaxis equivalente, como foo + = 1 o foo = foo + 1
- La raíz cuadrada se debe calcular al menos a 6 dígitos más allá del decimal (el lugar de los cientos de miles) y se debe emitir como un número entero de los decimales (por ejemplo, si ingreso 2 podría salir como 14142135624 o 1414213 dependiendo del redondeo) . Redondear hacia arriba o hacia abajo no es importante.
Las funciones definidas por el usuario no están permitidas. Además, la simulación de funciones con goto tampoco está permitida.
¡Estoy interesado en ver lo que todos envían! ¡Feliz codificación!
ACLARACIÓN
Aclare que el número es un entero positivo. Puede hacer un código que haga cualquier número, pero no es necesario.
ACLARACIÓN # 2
Aclare que los operadores de comparación están permitidos.
ACLARACIÓN # 3
La suma, resta, multiplicación, división y funciones a los números de cambio no se permiten en absoluto , independientemente de que se guardan en una variable o no. Lamento que esto invalide un par de respuestas existentes, pero tenía la intención de definir este grupo de operadores con "cambiar el número" para evitar respuestas troll (por ejemplo, acabo de usar la función sqrt (), solo prohibió la suma, multiplicación, división y resta). Perdón por la confusion.
ACLARACIÓN # 4
Aclare que necesitamos al menos 5 dígitos. 10 dígitos hicieron que el código se ejecutara durante mucho tiempo.
while r*r<n*10e20:r+=1
, bastante trivial? Además, puede considerar reducir la salida requerida a 10 ^ 8 más o menos. Primero, porque 10 ^ 10 es mayor que 2 ^ 31, y segundo, porque tomará un tiempo incrementar ese valor.