Supongamos que n es un número entero mayor o igual a 0. Se requiere usar solo la suma y un solo bucle para programar para calcular el número entero más grande que no exceda el signo raíz n.
Parece difícil prescindir de la multiplicación y la división. Algunas personas usan operaciones bit a bit. Desplazar una posición hacia la izquierda es básicamente equivalente a multiplicar por 2, y desplazar una posición hacia la derecha es básicamente equivalente a dividir por 2. (Piense en nuestro sistema decimal. Al multiplicar por 10, un desplazamiento hacia la izquierda. agrega cero, y al dividir por 10, se agrega un desplazamiento a la derecha (Desplazamiento) esencialmente sigue haciendo multiplicación y división.
Supongo que llamar directamente a la función sqrt() como la del primer piso probablemente no sea la respuesta que quiere el cartel. Si se puede llamar a la función sqrt(), podemos asignar directamente el resultado a una variable entera. Los números de coma flotante se asignan a datos enteros y la mantisa se trunca automáticamente.
a=sqrt(n); O también puedes a=(int)sqrt(n);
No es necesario realizar sumas, bucles y restas finales por uno. Ajuste.