public static int Sqrt(int n)
{
if (n < 0)
{
throw new System.ArgumentOutOfRangeException(nameof(n) + " >= 0 required");
}
if (n == 0) return 0;
int unten, oben = BitLength(n);
do
{
unten = n / oben;
oben += unten;
oben >>= 1;
}
while (oben > unten);
return oben;
}