Um programa melhor para avaliar a raiz quadrada de um número

Eu sou iniciante na linguagem de programação C e me foi dada a tarefa de escrever um programa que calcula a raiz quadrada de um número natural sem usarmath.h ou qualquer outra função de biblioteca, excetostdio.h.

Veja com quem trabalhamosint por toda parte, portanto, para números não quadrados, encontramos o piso da raiz quadrada de n. Agora eu criei esse programa, mas ele funciona apenas para quadrados perfeitos, mas para não quadrados não funciona. Estou citando aqui, espero que haja alguma maneira de modificá-lo.

#include <stdio.h> 
main() 
{    
    int a;
    scanf("%d", &a);
    int s = 1, l = a, mid = 0;
    while(s < l)
    { 
      mid=(s + l)/2;
      if((mid * mid) == a)
      {
          break;
      }
      else if ((mid * mid) < a)
      {
          s = mid + 1;
      }
      else
      {
          l = mid;
      }

    }   
    printf("%d", mid);
}

Muito obrigado por toda a sua ajuda e, por favor, corrija-me sempre que puder.

Editado: Desculpe pela inconveniência.

questionAnswers(2)

yourAnswerToTheQuestion